AWS同步lambda到lambda与nodejs一起调用

时间:2017-02-23 12:32:43

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

我在AWS内部有2个lambda函数。

功能A(FA),尝试同步调用功能B(FB)。当FA尝试呼叫FB时,FA将超时。 FA永远不会到达FA内部的回调方法,而且FB没有登录云计算表示它已被调用。

我已将两个功能设置为在同一区域,相同角色和没有VPC中运行(因为我读过VPC可能会导致问题,但是在相同的VPC和子网设置下也尝试过没有运气)

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

  • AWSLambdaExecute
  • AWSLambdaBasicExecutionRole
  • AWSLambdaRole

Funciton 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返回

REPORT RequestId:2db82333-f9c3-11e6-8160-93bd7ddf5b19持续时间:3000.43 ms结算时长:3000 ms内存大小:128 MB最大使用内存:25 MB
2017-02-23T12:25:39.363Z 2db82333-f9c3-11e6-8160-93bd7ddf5b19任务在3.00秒后超时

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

{   “id”:53148,   “名字”:“让我们来测试一下” }

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

1 个答案:

答案 0 :(得分:0)

因此,通过将FA上的超时增加到10秒,调用将起作用。我从来没有想过FA需要比默认超时更长的时间来调用需要2ms才能运行的FB。但是,它确实只需要更长的超时时间,因为它占用了3秒钟,任何后续呼叫都在100ms范围内运行。

当我重新添加VPC设置时仍然有问题,但现在我知道调用正在工作我可以解决我认为已在此处解决的问题

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