我一直在修改AWS Lambda中的nodejs代码,这些代码由一些API网关端点调用。我注意到在经过一段时间没有任何API网关调用后,下一个API网关请求将超时。我将收到标准Lambda错误消息,指出函数超时。但是,后续HTTP请求触发我的Lambda工作正常。
从表面上看,它似乎正在进入"闲置"模式,需要在API Gateway-Lambda请求正常工作之前进行充电。我考虑过设置一个wget cron来保持非空闲状态,但是有一个真正的解决方案,我怎样才能更好地理解发生了什么?
答案 0 :(得分:7)
Lambda让工作人员保持活动一段时间,并且(如您所知)在一段时间不活动后将该工作人员移除。以下是our forums上发布的一系列建议的副本:
一些建议:
- 保持Lambda功能“温暖”。如果它很少被调用,那么Lambda需要分配时会产生开销“冷启动”成本 资源来满足您的要求。有关详细信息,请参阅此帖。
- 使用基于资源的权限调用Lambda函数,而不是基于角色。这是为了避免API网关的开销 需要向STS发出assumeRole()请求。资源型 如果在控制台中进行调用,则调用是默认的。
- 如果合适,请考虑为您的API启用缓存。
- 您的API是否通过映射模板对请求或响应进行了任何转换?这显然会带来线性上升 转型的复杂性。
醇>
注意,#1应该只用作最后的手段,假设其他任何选项都不适合你。