aws-lambda - 如果调用方过早返回,则不执行异步 AWS Lambda

标签 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 毫秒是一个相当随意的魔数(Magic Number)。有没有人遇到过类似的问题并找到了更原则性的解决方法?

最佳答案

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 ?

关于aws-lambda - 如果调用方过早返回,则不执行异步 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857201/

相关文章:

amazon-web-services - 如何保护 AWS API 网关 URL 免受未经授权的访问?

java - 在 AWS Lambda : java. lang.Exception 上运行 JUnit 测试:没有可运行的方法

python - 从 Lambda 函数查询 Athena - QUEUED 状态?

python - 如何建立 S3 文件下载链接

amazon-web-services - AWS IoT Core 多环境

amazon-web-services - 无服务器框架 : S3 Lambda Trigger with bucket from resources

node.js - 我们如何使用 aws x-ray 跟踪 axios http 请求?

image - 运行 AWS Lambda 函数后,如何将图像放回同一个 S3 存储桶中?

javascript - 运行 AWS Lambda 函数,无论 cron 事件如何(并检查 Mongo DB 连接是否已成功建立)?

node.js - 如何在 Amazon Cognito 中高效获取大量用户