我不确定为什么,但是不时出现-在20次lambda调用中,一次,我收到错误消息:
Connection timed out after 120000ms
调用是从ECS容器完成的,所有(调用者和lambda)都写在node.js中。
我应该检查什么?
答案 0 :(得分:1)
我知道这是一篇过时的文章,但是我将用我正在处理的lambda来写出如何解决相同错误消息的情况。希望这对遇到类似问题的人有所帮助。
就我而言,我还在EC2中有一个Web应用程序,该应用程序通过lambda.invoke()
(npm aws-sdk)调用lambda。 EC2和lambda都在Node.JS上运行。即使错误记录在EC2内部,lambda本身也会将消息抛出给调用方(EC2)。
我的lambda向一个API发出了大约3,000个请求,这需要大约5分钟(300,000毫秒)的时间来获取所有响应。似乎lambda Node.JS运行时在lambda执行期间使套接字保持活动状态,该时间长于120,000 ms(2分钟)。当lambda代码继续运行超过此阈值时,运行时将引发错误,并且lambda会随之返回回调。
根据aws js sdk,AWS对象具有一个用于http超时的参数:
httpOptions(地图)-一组传递给低级HTTP请求的选项。当前支持的选项是:
- 超时[整数] -将套接字设置为在套接字上的闲置超时毫秒后超时。默认为两分钟(120000)。
将配置更改为360,000 ms(6分钟)后,lambda成功执行。因此,您可以根据需要将此参数设置为更高的值:
AWS.config.update({httpOptions: {timeout: 360000}});
答案 1 :(得分:0)