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

时间:2016-03-28 18:39:52

标签: amazon-web-services aws-lambda aws-api-gateway

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

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

1 个答案:

答案 0 :(得分:7)

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

  

一些建议:

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

注意,#1应该只用作最后的手段,假设其他任何选项都不适合你。