Я запускаю функцию AWS Lambda для обработки изображений и видео с помощью Node 4.3 as a runtime. Я вызываю свою функцию из моего кода webapp с узлом aws-sdk.Функция AWS Lambda invoke не всегда возвращает
Проблема в том, что, когда функция занимает много времени (например, 250 секунд), обратный вызов вызова никогда не принимается, хотя я могу четко видеть в журналах aww cloudwatch правильную работу функции. Кроме того, функция повторно запускается по крайней мере дважды (это, вероятно, связано с параметром maxRetries из вызова: поскольку он не получает ответ, он повторяет попытку).
Что меня смущает, так это то, что он работает для более быстрых функций, и моя функция лямбда никогда не выйдет из строя. У кого-то есть такая проблема? Может ли это быть связано с новой версией 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 секунд, что может объяснить, что вы получаете повтор. Не могли бы вы попытаться изменить эту конфигурацию внутри вас? – Tom
Нет конфигурации тайм-аута с максимальным значением: 300 секунд. Если он выходит за 300 секунд, функции выходят из строя, и я вижу это в журналах cloudwatch. Если я установил тайм-аут на меньшее значение, скажем, 30 секунд, функция вернется с ошибкой таймаута, и я поймаю ошибку обратного вызова. –
обратите внимание, что я не говорю о тайм-ауте лямбда, но о том, что из конфигурации sdk, так? – Tom