让lambdas保持温暖,并用一个简单的装饰器监视冷启动
lambda-warmer-p的Python项目详细描述
Lambda加热器PY:处理AWS Lambda冷启动
lambda-warmer-py
包包含一个decorator,可以轻松地将aws lambda cold的阻力降到最低
开始。只是…
- 将lambdas包装在
@lambdawarmer.warmer
装饰器中并 - 每5分钟ping一次lambda
而且你的感冒会大大减轻。
配置选项也可用于…
- 允许保持许多concurrentlambdas warm
- 发送CloudWatch metrics 通过lambda函数名跟踪冷启动和热启动的次数
暖化逻辑是python对js
package,lambda-warmer
的一种改编。在他的网站here上阅读更多关于这种方法的背景知识
以及lambda优化的一些最佳实践。
*除了支持cloudwatch度量之外,参数化方面还有一些小的差异。见configuration。
安装
pip install lambda-warmer-py
使用Lambda加热器
基础知识
<>将LAMBDA保暖器加入到现有的LAMBDAS中只需要增加一个装饰器即可。importlambdawarmer@lambdawarmer.warmer()defyour_lambda_function(event,context):pass
同时升温
为了利用并发选项,包将多次调用lambda。这意味着 lambda需要以下权限
-Effect:AllowAction:lambda:InvokeFunctionResource:[your-lambdas-arn]
启用coldstart/warmstart cloudwatch度量
为了让lambda hermer跟踪冷启动和热启动指标,lambda执行角色将需要权限 向cloudwatch发送度量数据。所需的策略操作是
-Effect:AllowAction:cloudwatch:PutMetricData
暖羊
创建一个CloudWatch Rule 定期直接调用lambda并将以下json作为事件传递
{"warmer":true,"concurrency":(int,defaultsto1)}
可以通过重写装饰器中的参数来更改warmer
和concurrency
名称。见
configuration了解详细信息。
配置
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)defyour_lambda_function(event,context):pass
此实现将预期形式的事件
{"am_i_a_warmer":true,"how_many_lambdas":(int)}
所有并发执行将延迟150毫秒。
示例:发送度量
如果您想跟踪暖/冷启动次数的指标,请在decorator中激活该功能。
@lambdawarmer.warmer(send_metric=True)defyour_lambda_function(event,context):pass
note:此实现中excluded但可以在js
版本中找到的配置选项是
test
:在unittests中使用mock/fakes而不是标记的调用来处理测试log
:导入的python包的日志级别应该通过stdliblogging
模块处理。correlationId
。因为我们在python中并且总是设置为 当前lambda的aws_request_id
字段是在原始lambda-warmer
包中推荐的。