使用简单的装饰器保持 lambdas 温暖并监控冷启动
项目描述
lambda-warmer-py:照顾 aws lambda 冷启动
该lambda-warmer-py软件包包含一个装饰器,可以轻松地最大程度地减少 aws lambda 冷启动的拖累。只是 ...
- 将您的 lambda 包装在
@lambdawarmer.warmer装饰器中并 - 每 5 分钟 ping 一次你的 lambda
你会减少你的冷启动。
配置选项也可用...
- 允许保持许多并发lambdas 温暖
- 发送CloudWatch 指标 ,按 lambda 函数名称跟踪冷启动和热启动的数量
升温逻辑是js 包的 python 改编* , lambda-warmer. 在他的网站上阅读有关此方法的背景的更多信息,并在此处阅读
有关 lambda 优化的一些最佳实践。
* 除了支持 CloudWatch Metrics 之外,在参数化方面还有一些小的差异。请参阅配置。
安装
pip install lambda-warmer-py
使用 lambda 加热器
基础知识
将 lambda warmer 合并到您现有的 lambdas 中只需要添加一个装饰器。
import lambdawarmer
@lambdawarmer.warmer
def your_lambda_function(event, context):
pass
同步升温
为了利用并发选项,包将多次调用您的 lambda。这意味着部署的 lambda 将需要以下权限
- Effect: Allow
Action: lambda:InvokeFunction
Resource: [your-lambdas-arn]
启用 ColdStart/WarmStart CloudWatch 指标
为了让 lambda warmer 跟踪冷启动和热启动指标,lambda 执行角色需要将指标数据发送到 CloudWatch 的权限。所需的政策行动是
- Effect: Allow
Action: cloudwatch:PutMetricData
加热你的 lambdas
创建一个CloudWatch 规则,定期直接调用您的 lambda 并将以下 json 作为事件传递
{
"warmer": true,
"concurrency": (int, defaults to 1)
}
可以通过覆盖装饰器中的参数来更改warmer和名称。详见
配置。concurrencywarmer
配置
lambda 加热器是通过@warmer装饰器的函数参数配置的。它需要以下...
flag (string, default = 'warmer')
用于指示它是热身事件的字段的名称。
concurrency (string, default = 'concurrency')
用于设置要调用和保持温暖的并发 lambda 数量的字段名称。
delay (int, default = 75)
并发热身调用应休眠的毫秒数。这有助于避免在并发目标上交付不足。
send_metric (bool, default = False)
是否将在每次调用时发送冷/热启动次数的 CloudWatch 指标。指标名称是ColdStart和WarmStart,记录在LambdaWarmer命名空间下,可以通过 lambda 函数名称进行过滤。
示例:温暖的配置覆盖
使用替代事件和延迟配置很简单。
@lambdawarmer.warmer(flag='am_i_a_warmer', concurrency='how_many_lambdas', delay=150)
def your_lambda_function(event, context):
pass
此实现将期望以下形式的事件
{"am_i_a_warmer": true, "how_many_lambdas": (int)}
并且所有并发执行将延迟 150 毫秒。
示例:发送指标
如果您想跟踪有关暖/冷启动次数的指标,请在装饰器中激活该功能。
@lambdawarmer.warmer(send_metric=True)
def your_lambda_function(event, context):
pass
注意:从该实现中排除但可以在js版本中找到的配置选项是
test:在单元测试中使用模拟/伪造而不是标记调用来处理测试log: 导入的 python 包的日志级别应该通过 stdliblogging模块处理。correlationId.correlation_id自从我们在 python 中以来,这已被制成蛇形外壳,并且始终aws_request_id按照原始lambda-warmer包中的建议设置为当前 lambda 的字段。
项目详情
lambda_warmer_py -0.6.0-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 881ca23f2678abf22a56edd8328d7b2a0423f5e391052fdf931067cd1430512b |
|
| MD5 | ad34b7623ee13e566abe3e7e029274b3 |
|
| 布莱克2-256 | b13fcf6c59d2392a7a2e52feda0fbef2832a2c95cf92cb01e3c46925281e1147 |