我正在使用nodejs aws-sdk调用长时间运行的Lamda函数。众所周知,AWS已将lambda执行时间增加到900秒。但是在执行300秒的lamda之后,我无法获得lamda invoke响应。
以下是复制guid的问题:
名为error-handle
的AWS Lambda代码(Node.js 10.x):
const { promisify } = require('util')
const sleep = promisify(setTimeout)
exports.handler = async (event,context) => {
await sleep(310000);
return 'Success'
};
Lambda调用index.js:
const AWS = require('aws-sdk');
const main = async() =>{
const lambda = new AWS.Lambda({
region:'ap-southeast-2',
maxRetries: 0,
httpOptions: {
timeout: 600000,
}
});
let result;
try {
result = await lambda.invoke({
FunctionName: 'error-handle',
InvocationType: 'RequestResponse',
Payload: ""
}).promise();
}catch(error){
result = error;
}
console.log(result);
return result;
}
main()
我运行node index.js
并等待310
秒的lambda执行时间。我可以看到lambda已经成功存在。但是我无法在index.js
中得到答复。在600
秒后,我将根据超时配置收到超时错误。
AWS lambda似乎没有通过api端点将执行时间从300
增加到900
秒。