我需要从另一个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不会生成云监视日志)。与此代码相关的问题是什么。
根据Lambda invoke()文档,您将看到默认情况下,Lambda函数是使用RequestResponse调用类型来调用的。要异步调用该函数,您需要指定Event调用类型,如下所示:
RequestResponse
Event
lambda.invoke({ FunctionName: 'testLambda', InvocationType: 'Event', Payload: JSON.stringify(event, null, 2) },function(err,data){});