使用Node.js aws-sdk 300秒后,AWS Lambda无法获得响应

时间:2019-09-14 08:56:36

标签: node.js aws-lambda aws-sdk

我正在使用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秒。

0 个答案:

没有答案