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

2024-02-23

我正在尝试调用异步 lambda 函数within另一个 lambda 函数,我发现如果调用函数退出得太快,它就不会被执行。

换句话说,以下内容永远不会起作用。 LambdaFunction2 永远不会被调用。

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

但到目前为止,在 LambdaFunction1 退出之前添加一个小延迟确实有效:

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

让我担心的是,等待 500 毫秒是一个相当任意的神奇数字。有没有人遇到过类似的问题并找到了更有原则的解决方案?


callLambdaFunction2()之前可能没有完成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?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果调用者返回太早,则异步 AWS Lambda 不会执行 的相关文章

随机推荐