AWS Lambda回调节点js太快了

时间:2015-08-21 20:33:27

标签: node.js amazon-web-services aws-lambda

我正在尝试复制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();
 }
});

1 个答案:

答案 0 :(得分:3)

我找到了问题的答案。我搞砸了调用函数时可以提供的调用类型。有三种调用方式,在我的问题中,我使用的是“事件”类型。这导致lambda函数给出直接(因此异步响应),该函数可能尚未完成。将调用类型更改为“RequestResponse”会提供同步响应,我们希望等待我们的函数完成。

另请参阅AWS Documentation