我需要从另一个 lambda 异步调用 aws lambda。我有一个用于同步调用的工作代码。
exports.handler = (event, context, callback) => {
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
region: 'myregion' //change to your region
});
console.log("lambda invoke started");
lambda.invoke({
FunctionName: 'testLambda',
Payload: JSON.stringify(event, null, 2) // pass params
}, function (error, data) {
if (error) {
console.log("error");
callback(null, 'hello world');
}
else {
console.log("lambda invoke end");
callback(null, 'hello world');
}
});
}
但就我而言,“testLambda”是一个耗时的函数。因为我需要在调用“testLambda”函数后退出。然后代码像这样更新
exports.handler = (event, context, callback) => {
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
region: 'myregion' //change to your region
});
console.log("lambda invoke started");
lambda.invoke({
FunctionName: 'testLambda',
Payload: JSON.stringify(event, null, 2) // pass params
});
console.log("lambda invoke end");
callback(null, 'hello world');
}
它正确返回消息。但是我的“testLambda”函数没有被调用(没有为测试 lambda 生成云监视日志)。与此代码相关的问题是什么。
最佳答案
根据 the Lambda invoke() documentation ,您将看到默认情况下使用 RequestResponse
调用类型调用 Lambda 函数。要异步调用函数,您需要指定 Event
调用类型,如下所示:
lambda.invoke({
FunctionName: 'testLambda',
InvocationType: 'Event',
Payload: JSON.stringify(event, null, 2)
},function(err,data){});
关于node.js - 从另一个 lambda 异步调用 aws lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39126606/