【发布时间】:2017-11-23 23:52:29
【问题描述】:
我正在尝试编写一个触发许多小 lambda 的 lambda 函数
exports.handler = (event, context, callback) => {
var AWS = require('aws-sdk');
let noOfPages = 20, currentPage = 1;
var message = '';
//let payloadArray = [];
while(currentPage <= noOfPages){
message = '{"first_page": '+ currentPage +', "last_page": '+ (currentPage) + ', "file_name" : "something.doc"' +'}';
console.log(message);
var params = {
FunctionName: 'test',
InvocationType: 'Event',
LogType: 'Tail',
Payload: message
};
var convLambda = new AWS.Lambda({
accessKeyId: 'key',
secretAccessKey: 'secret',
region: 'us-west-2'
});
convLambda.invoke(params, function(err, data) {
if (err) {
context.fail(err);
} else {
context.succeed('Processed : '+ data);
}
})
currentPage+=1;
}
};
这很好用并且可以触发,比如 20 个 lambda。但是,我想等到所有异步 lambda 都完成(fork 和 join)。目前在 Amazon Lambda 中有没有办法实现这一点?
【问题讨论】:
-
java != nodejs.还承诺?
-
@hjpotter92 我在java中有相同的代码,因此是标签。
-
在这里docs.aws.amazon.com/sdk-for-java/v1/developer-guide/… 下找到了我需要的答案作为 java 期货。
-
答案当然是特定于所使用的编程语言。答案与 AWS Lambda 关系不大,更多的是与所使用的特定编程语言的可用功能相关。如您所见,如果您使用 Java 编写 Lambda 函数,则可以使用 Java Futures。正如 hjpotter92 指出的那样,您将使用 Promises 在 NodeJS 中完成同样的事情。
标签: node.js amazon-web-services aws-lambda