Я пытаюсь скопировать пример миниатюр, который находится в документации AWS (link). Я хочу использовать этот значок, как только он будет создан. Я надеялся, что обратного вызова context.done() будет достаточно. Обратный вызов дает мне хороший ответ, но он слишком скоро. Не всегда изображение изменяется и доступно в ведро s3, которое оно хранится. При вызове лямбда-функции я специально устанавливаю тип вызова в «Событие», поэтому обратный вызов должен возвращаться после того, как функция будет изменена.AWS Lambda callback node js слишком быстро
Учитывая пример в документации, что было бы удобным способом для ожидания всей лямбда-функции? Функция, которая вызывает функцию лямбда в моем приложении теперь выглядит следующим образом:
AWS.config.loadFromPath('./configs/config.json');
var lambda = new AWS.Lambda();
var params = {
FunctionName: 'resizeImage',
InvocationType: 'Event',
Payload: JSON.stringify({key: req.body.key})
};
lambda.invoke(params, function (err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
} else {
console.log(data); // successful response
next();
}
});
Ваш ведро в нас-восток-1, и вы смотрели на [непротиворечивость модели] (https://aws.amazon.com/s3/faqs/#What_data_consistency_model_does_Amazon_S3_employ) как объяснение? – James
Я использую зону eu-west-1, и модели согласованности, похоже, не являются проблемой, мои журналы CloudWatch показывают мне правильное время, необходимое для завершения лямбда-функции в ms, только мое приложение вызывается до этого. Приложение получает ответ после 500 мс, пока функция лямбда занимает около 2000 мс. – Menno