Wro*_*ski 2 javascript amazon-web-services promise async-await aws-lambda
目前
我有一个lambdaX调用另一个lambdaY。
拉姆达 X:
"use strict";
const AWS = require('aws-sdk');
AWS.config.region = 'ap-southeast-2';
var lambda = new AWS.Lambda();
exports.handler = async (event) => {
//the final return
var dataToSave = []
//data to be added to array
let returnLoad;
var params = {
FunctionName: 'lambdaY', // the lambda function we are going to invoke
InvocationType: 'RequestResponse',
LogType: 'Tail', //Set to Tail to include the execution log in the response.
};
try {
await lambda.invoke(params, function(err, data) {
if (err) {
console.log("Error");
console.log(err, err.stack);
} else {
console.log("Success");
console.log(data);
returnLoad = data.Payload;
}
}).promise();
dataToSave.push(returnLoad);
} catch (err) {
console.log('some error occurred...');
}
const response = {
statusCode: 200,
body: JSON.stringify(dataToSave)
};
return response;
}
Run Code Online (Sandbox Code Playgroud)
拉姆达 Y:
exports.handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
Run Code Online (Sandbox Code Playgroud)
问题
出于某种原因,每当我调用lambdaX时,lambdaY 都会调用 2+ 次。请注意,lambdaX会返回正确的响应,但我想避免多次不必要地调用lambdaY。
我需要在我的代码中更改什么?(或 lambda 配置)
日志:
注意:2 个 lambdaY 日志同时被调用。
注意:LambdaX 结果正常且符合预期。没有重复的日志。
您的代码滥用了 AWS 开发工具包。具体来说,它使用两种回调和承诺功能同时。它应该使用其中之一,但不能同时使用两者。
我会将它更改为仅使用承诺(并且显然为此添加了一些错误处理):
const data = await lambda.invoke(params).promise();
const returnLoad = data.Payload;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |