2016-03-21 56 views
12

我有這個簡單的描述,我試圖通過AWS LAMBDA在對的NodeJS運行的實例函數:AWS拉姆達描述情況下超時

var AWS = require('aws-sdk'); 
AWS.config.region = 'us-east-1'; 

exports.handler = function(event, context) { 
    console.log("\n\nLoading handler\n\n"); 
    var ec2 = new AWS.EC2(); 
    ec2.describeInstances(function(err, data) { 
     console.log("\nIn describe instances:\n"); 
     if (err) { 
     console.log(err, err.stack); 
     context.done(null, 'Function Finished from error!'); // an error occurred 
     }else { 
     console.log("\n\n" + data + "\n\n"); 
     context.done(null, 'Function Finished with data!'); // successful response 
     } 
    }); 
}; 

這不還給我任何錯誤,在CloudWatch的唯一輸出是這樣的:

2016-03-21T17:01:59.085Z xxxxxxx-xx.... Task timed out after 3.00 seconds 

任何人都有任何想法可能是什麼問題?

+1

您是否爲Lambda函數啓用了VPC訪問? –

+0

@MarkB是我選擇了VPC,子網和安全組 – Tomas

+0

如果增加超時時間,它仍然超時? –

回答

0

檢查:https://medium.com/@philippholly/aws-lambda-enable-outgoing-internet-access-within-vpc-8dd250e11e12#.2sdn5oyd1

如果您在VPC,你不能訪問互聯網!

您應該配置NAT以啓用lambda中的傳出Internet訪問。

+2

請不要給只有鏈接的答案。您應始終在答案的正文中包含(最小)必要步驟以獲得解決方案。鏈接可能會下降,然後你的答案變得毫無用處。因此,只需引用所需的步驟,並在信用到期時給予信貸。 –

2

確保執行角色具有EC2權限,並嘗試使用:

context.fail()context.succeed()

VS

context.done()

+0

有沒有一個來源可以解釋更多關於此方法? – Doug

9

我也面臨着同樣的問題。我增加超時(LAMBDA - - >配置 - >高級設置)從3秒到5秒,它工作正常。

+0

另一種方法是增加內存配置並將超時時間設置爲30秒。然後運行測試,它會顯示它需要多長時間。 –