2017-02-23 170 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