从AWS Lambda请求超时

时间:2018-11-14 08:52:01

标签: amazon-web-services aws-lambda

我正在尝试使用serverless框架创建应用。

所有功能在我的本地计算机上都能正常工作。

但是远程计算机(Lambda)给出以下错误消息。 (这需要30秒)

{
    "message": "Endpoint request timed out"
}

代码大小为37.5 MB,实例内存大小为3008 MB

任何建议或建议将不胜感激。预先谢谢你

1 个答案:

答案 0 :(得分:0)

我通过设置为callbackWaitsForEmptyEventLoop = false解决了我的问题。

默认情况下,在NodeJS Lambda函数中调用callback()函数不会结束该函数的执行。它将继续运行,直到事件循环为空。当您坚持打开数据库连接时,会发生NodeJS Lambda函数在调用回调后继续运行的常见问题。您尚未发布任何代码,因此我无法提供具体建议,但是您需要确定是否要在代码中打开数据库连接或类似的内容。

这是documentation关于callbackWaitsForEmptyEventLoop行为的说法:

  

callbackWaitsForEmptyEventLoop

     

默认值为true。此属性仅在修改   回调的默认行为。默认情况下,回调将等待   直到Node.js运行时事件循环为空,然后冻结   处理并将结果返回给调用者。你可以设置这个   属性设置为false以请求AWS Lambda尽快冻结该过程   调用回调后,即使事件中有事件   环。 AWS Lambda将冻结该流程,任何状态数据以及   Node.js事件循环中的事件(事件中所有剩余事件   接下来调用Lambda函数以及AWS时处理的循环   Lambda选择使用冻结过程。有关更多信息   回调see Using the Callback Parameter