我正在尝试复制AWS文档(link)中的缩略图示例。我想在创建缩略图后立即使用它。我希望context.done()回调就足够了。回调给了我一个很好的回应,但现在还为时过早。并不总是在存储的s3存储桶中调整图像大小并使其可用。在调用lambda函数时,我特别将调用类型设置为“Event”,以便在函数调整大小后回调。
鉴于文档中的示例,等待整个lambda函数完成的propper方法是什么?现在,在我的应用程序中调用lambda函数的函数如下所示:
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();
}
});
答案 0 :(得分:3)
我找到了问题的答案。我搞砸了调用函数时可以提供的调用类型。有三种调用方式,在我的问题中,我使用的是“事件”类型。这导致lambda函数给出直接(因此异步响应),该函数可能尚未完成。将调用类型更改为“RequestResponse”会提供同步响应,我们希望等待我们的函数完成。