函数调用 AWS Python Lambda 函数"/>
如何从另一个 Node.js Lambda 函数调用 AWS Python Lambda 函数
我是 JavaScript 和 AWS 的新手。我正在努力将 Python AWS Lambda 函数连接到 Node.js AWS Lambda 函数。
我想从主 Lambda 函数(假设为父 lambda)的中间行调用一个单独的 Lambda 函数(假设为子 lambda),并在父 lambda 中使用子 lambda 的返回值。
我的子 lambda 在 Python 3.6 中实现,父 lambda 在 Node.js 12.x 中实现。 我想停止执行父 lambda,直到子 lambda 返回它的值。
但似乎父 lambda 中的其余代码行在完成子 lambda 的执行之前执行。
我使用以下链接为父 lambda 设置了所需的策略。
/
我有一个数组分配给变量'img'。如果条件满足,我需要通过将有效负载作为“img”数组传递来调用子 lambda,以便对该数组执行一些额外的计算并将其返回给父 lambda。最后用返回的数组替换“img”变量。
下面是我在父 lambda 中用来调用子 lambda 的代码块。 请注意,“returnArr”是子 lambda 返回的数组。
const AWS = require('aws-sdk');
AWS.config.region = 'ap-southeast-2';
var lambda = new AWS.Lambda();
exports.handler = async (event, ctx, callback) => {
//////////code lines for other operations////////////
let img = [[[2,3,5],[6,7,8]],[[12,13,15],[16,17,18]]];
let flag=0;
if(condition){
console.log("BEGIN");
var params = {
FunctionName: 'childFunction', // child lambda function written in Pyton 3.6
InvocationType: 'RequestResponse',
Payload: JSON.stringify({ "sendImg" : img})
};
lambda.invoke(params, function(err, data) {
console.log("SENT");
if (err) {
console.log(err);
} else {
//console.log('Lambda_B said '+ data.Payload);
let body1;
flag = 1;
if(typeof(data.Payload) == 'object') {
body1 = data.Payload;
} else {
body1 = JSON.parse(data.Payload);
}
img = body1["returnArray"];
console.log("Modified img array inside: ",img);
}
})
console.log("DONE");
}
console.log("flag : "+flag);
console.log("Modified img array outside: "+img);
////////Rest of the code///////////////////////
};
我得到如下输出:
开始
完成
标志:0
修改img数组外:[[[2,3,5],[6,7,8]],[[12,13,15],[16,17,18]]]
发送
修改后的img数组里面:[[[23,31,54],[63,71,86]],[[12,133,115],[162,117,18]]]
根据输出,您可以看到 if 条件之外的 2 行代码在子 lambda 返回修改后的数组之前已经执行。
如果条件未修改,则在外部的“img”数组,但如果条件已修改,则在内部的“img”数组。
我想停止执行父 lambda,直到子 lambda 返回它的数组。
我认为这是因为我没有太多 NodeJS 知识。
有人可以告诉我哪里出错了吗?
父 lambda 在子 lambda 执行完成之前执行
你正在使用 async handler,所以你的函数在它有机会调用另一个函数之前完成。
为了克服这个问题,您可以将代码包装在
new Promise
中的处理程序中,如AWS 文档 中所示。
更多推荐
如何从另一个 Node.js Lambda 函数调用 AWS Python Lambda 函数
发布评论