2017-02-23 169 views
1

我在AWS内部有2个lambda函数。AWS使用nodejs同步lambda到lambda的调用

函数A(FA)试图同步调用函数B(FB)。当FA尝试调用FB时,FA将超时。 FA永远不会到达FA内部的回调方法,并且FB没有在Cloudwatch中记录日志以表示它被调用。

我已经设置了两个功能在相同的区域,相同的角色,没有VPC(因为我读过VPC可能会导致问题,但已尝试在相同的VPC和子网设置以及没有运气)

用户角色具有下列权限相关联

  • AWSLambdaExecute
  • AWSLambdaBasicExecutionRole
  • AWSLambdaRole

功能可按甲

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 - (名称=>异步接收器检验)

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-93bd7d df5b19任务超时3.00秒

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

{ “ID”:53148, “名”: “让我们测试” }

所以从FB中我可以看出来这不是问题,但由于某些原因,从FA调用时没有响应。

回答

0

因此,通过增加FA上的超时到10秒,调用将起作用。我从来没有想过FA会需要比默认超时更长的时间来调用运行2ms的FB。不过,它只需要第一次通话的超时时间,因为它需要3秒钟的时间才能运行,随后的任何通话都在100ms范围内运行。

还有一个问题,当我加入VPC设置回,但现在我知道,调用工作,我可以解决这个问题,我相信这里已经解决

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