我正在爲Node 4.3 as a runtime運行用於圖像/視頻處理的AWS Lambda函數。我使用節點aws-sdk從我的webapp代碼調用我的函數。AWS Lambda調用函數並不總是返回
問題是,當函數花費很長時間執行(例如250秒)時,調用回調從不會被接收到,儘管我可以在aws cloudwatch日誌中清楚地看到該函數正確執行。除此之外,函數至少再次重新運行兩次(這可能與調用中的maxRetries參數有關:因爲它沒有得到響應,所以重試)。
讓我困惑的是,它適用於更快速的函數,而且我的lambda函數永遠不會超時。任何人有這樣的問題?它可以與新的4.3運行時相關嗎?請注意,我省略了context.succeed()
或context.fail()
,因爲它不再是必需的,但我試過了,它不會改變任何事情。
LAMBDA代碼
...
var handler = function (event, context, callback) {
// video/image processing code
//
// callback function
..., function(err, result) {
if (err) {
console.log("Error", err, err.stack);
callback(err);
} else {
console.log("Done");
callback(null, result);
}
}
};
LAMBDA調用
var lambda = new AWS.Lambda;
var myEventObject = {...};
var payload = JSON.stringify('myEventObject');
var params = {
FunctionName: 'myLambdaFunction'
InvocationType: 'RequestResponse',
LogType: 'None',
Payload: payload
};
lambda.invoke(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
LAMBDA CloudWatch的登錄
REPORT RequestId: xxx Duration: 206757.82 ms Billed Duration: 206800 ms Memory Size: 1536 MB Max Memory Used: 354 MB
我懷疑sdk的超時配置是240秒,這可能會解釋你得到一個重試。你可以嘗試在你的cli中改變這個配置嗎? – Tom
否超時配置設置爲最大值:300秒。如果超過300秒,功能會超時,我可以在CloudWatch日誌中看到它。如果我將超時設置爲較低的值(例如30秒),則該函數返回超時錯誤,並捕獲回調錯誤。 –
請注意,我不是在談論lambda的超時,而是從sdk配置的那個,你呢? – Tom