重新启动AWS Lambda函数以清除缓存

Mar*_*arc 7 amazon-s3 amazon-web-services aws-lambda

我有一个AWS Lambda函数,该函数在冷启动时通过s3调用创建对象。然后,我在函数预热时将对象保存在缓存中,以减少加载时间。在s3中更改文件时,我有一个触发器来运行lambda,但并非所有正在运行的lambda实例都会重新启动并从s3中提取。

是否有办法降低所有强制完全冷启动的lambda实例?

另外,我不想使用python。

Bak*_*alf 13

我根据@DejanVasic 的评论和验证做出了回答

aws lambda update-function-configuration --function-name "myLambda" --description "foo"
Run Code Online (Sandbox Code Playgroud)

这将强制 lambda 的下一次调用“冷启动”。

验证:

@timestamp, @message | sort @timestamp desc | limit 1000 | filter @message like "cold_start:true"
Run Code Online (Sandbox Code Playgroud)

  • 圣莫利,这太疯狂了,为什么它不刷新新代码部署上的热容器...... (3认同)

Ren*_*rro 12

使用UpdateFunctionCodeAPI 端点强制刷新所有容器。AWS 开发工具包对此进行了封装,使您可以更轻松地使用首选语言调用 API。

  • 我遇到这个答案是因为我们开始使用预配置并发。但是对于预配置的并发性,我们似乎必须对 lambda 进行版本控制(因为您无法基于最新版本进行预配置)。但根据文档,您无法修改已发布版本的代码,只能修改未发布版本的代码。所以我想这个解决方案不会帮助我(我必须发布 lambda 的新版本)。 (2认同)

use*_*539 12

我发现最简单的方法是更改​​基本设置中的某些内容,例如超时: 基本设置

我已经增加了+1秒,保存,并且函数被刷新 内存和超时设置


小智 11

只需添加一个新的环境变量和/或更改现有的环境变量。我创建了一个名为 BOGUS 的数字,并给了它一个数字,每当我想要强制冷启动时,我都会递增该数字。


das*_*mug 5

目前,无法强制重新启动正在运行的 Lambda 容器。

但是,您可以重新部署该函数,以便从那时起开始使用新容器。

  • `aws lambda update-function-configuration --function-name "myLambda" --description "foo"`怎么样。这将迫使 lambda 的下一次调用“冷启动”? (3认同)
  • @BakedInhalf 我可以确认你的解决方案完美运行。运行此 cloudwatch 查询:`fields @timestamp, @message | 排序 @timestamp desc | 限制 1000 | filter @message like "cold_start:true"` 将显示 lambda 日志的冷启动在运行 update-function-configuration 后开始显示。谢谢 (2认同)