如果调用者返回得太早,则不执行异步AWS Lambda

时间:2015-06-16 00:47:56

标签: aws-lambda

我试图从另一个lambda函数中的中调用异步lambda函数,并且我发现如果调用函数退出也不会执行它很快。

换句话说,以下内容并没有奏效。 LambdaFunction2永远不会被调用。

function lambdaFunction1(event, context) {
  callLambdaFunction2();
  context.done(null);
}

但是在LambdaFunction1退出之前添加一个小延迟确实可以工作到目前为止:

function lambdaFunction1(event, context) {
  callLambdaFunction2();
  setTimeout(
    function() {
     context.done(null);
    }, 500
  );
}

我担心的是等待500毫秒是一个相当随意的幻数。有没有人遇到过类似的问题并找到了更有原则性的修复方法?

1 个答案:

答案 0 :(得分:5)

context.done(null)导致处理程序退出之前,

context.done可能无法完成。

要解决此问题,您需要调用lambda.invoke({ FunctionName: "functionName", InvocationType: 'Event', Payload: JSON.stringify(event) }, function(err, data) { if (err) return context.done(err, null); return context.done(null, data); }); 作为回调。例如:

callLambdaFunction2

如果这不是解决方案,您能否展示一下如何实施ss