node.js - AWS同步lambda与nodejs的lambda调用

标签 node.js amazon-web-services lambda aws-lambda

我在 AWS 中有 2 个 lambda 函数。

函数A (FA),尝试同步调用函数B (FB)。当FA尝试调用FB时,FA将超时。 FA 从未到达 FA 内部的回调方法,并且 FB 在 cloudwatch 中没有日志表明它被调用。

我已将这两个函数设置为在同一区域、相同角色且没有 VPC 的情况下运行(因为我已经读到 VPC 可能会导致问题,但也尝试在相同的 VPC 和子网设置下进行操作,但没有成功)

用户角色具有以下关联权限

  • AWSLambda执行
  • AWSLambdaBasicExecutionRole
  • AWSLambda角色

函数A

exports.handler = (event, context, callback) => {
    var aws = require('aws-sdk');
    var lambda = new aws.Lambda({
      region: 'ap-southeast-2'
    });


    lambda.invoke({
      FunctionName: 'async-receiver-test'
    }, function(error, data) {
        console.log('inside return function');
      if (error) {
         context.done('error', error);
      }
      if(data.Payload){
        context.succeed(data.Payload);
      }
    });
};

函数 B -(名称 => async-receiver-test)

exports.handler = (event, context, callback) => {
    var eventItem = {id : 53148, name : "Let's get testing"};
    callback(null, eventItem);
};

在控制台内运行函数 A 返回

报告请求 ID:2db82333-f9c3-11e6-8160-93bd7ddf5b19 持续时间:3000.43 毫秒 计费持续时间:3000 毫秒 内存大小:128 MB 最大使用内存:25 MB
2017-02-23T12:25:39.363Z 2db82333-f9c3-11e6-8160-93bd7ddf5b19 任务在 3.00 秒后超时

在控制台内运行函数 B(持续时间:14.36 毫秒)

{ “ID”:53148, "name": "让我们测试一下" }

据我所知,这不是 FB 的问题,但由于某种原因,从 FA 调用时没有响应。

最佳答案

事实证明,通过将 FA 的超时时间增加到 10 秒,调用将起作用。我从未想过 FA 需要比默认超时更长的时间来调用 FB,该 FB 需要 2 毫秒才能运行。然而,它只需要第一次调用更长的超时时间,因为它运行了 3 秒,任何后续调用都在 100 毫秒范围内运行。

当我重新添加 VPC 设置时仍然遇到问题,但现在我知道调用正在工作,我可以解决这个问题,我相信这里已经解决了

https://stackoverflow.com/a/39206646/564957

关于node.js - AWS同步lambda与nodejs的lambda调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42415871/

相关文章:

amazon-web-services - dynamodb-按数组内的值扫描项目

c# - 使用 Entity Framework 时为 Select() 创建通用选择器

node.js - 如何使 Node 调度在 Heroku 中工作?

javascript - Nodemon ts-node 无法监视 JavaScript 更改

javascript - Node.js, ajax - 前端路由

amazon-web-services - 使用 boto3 访问其他 aws 用户 s3 存储桶

javascript - 从 Sails.js 中的关联模型访问模型的属性

mysql - 为 MySQL 值生成 ID 键

vb.net - 用于循环类属性的 Lambda 表达式

java - 如何使用 Java 流获取具有相同最大值的所有对象?