AWS Lambda和API网关 - 闲置; 需要在第一次请求时"醒来"/没有回复?

Bil*_*ers 2 amazon-web-services aws-lambda aws-api-gateway

我一直在修改AWS Lambda中的nodejs代码,由一些API网关端点调用.我注意到,经过一段时间没有任何API网关调用后,下一个API网关请求将超时.我将得到标准的Lambda错误消息,说明函数超时.但是,后续HTTP请求触发我的Lambda工作正常.

从表面上看,看起来某些东西正在进入"空闲"模式,需要在API Gateway-Lambda请求正常工作之前进行充电.我考虑过设置一个wget cron以保持非空闲状态,但是有没有真正的解决方案,我怎样才能更好地理解发生了什么?

Bob*_*ney 7

Lambda让工作人员保持活动一段时间,并且(如您所知)在一段时间不活动后将该工作人员移除.以下是我们论坛上发布的一系列建议的副本:

一些建议:

  1. 保持Lambda功能"温暖".如果不经常调用它,则会产生开销"冷启动"成本,因为Lambda需要分配资源来满足您的请求.有关详细信息,请参阅此帖子.
  2. 使用基于资源的权限调用Lambda函数,而不是基于角色.这是为了避免API网关需要向STS发出assumeRole()请求的开销.如果在控制台中进行设置,则基于资源的调用是默认的.
  3. 如果合适,请考虑为您的API启用缓存.
  4. 您的API是否通过映射模板对请求或响应进行任何转换?这显然会随着转换的复杂性而产生线性上升.

注意,#1应该只作为最后的手段使用,假设没有其他选项适合您.