У меня есть две лямбда-функции, и мне нужно вызвать функцию с именем sendHealthData
из функции с именем receiveHealthData
. Я использую Node.JS 8.10 и Serverless framework.
Вот код для receiveHealthData
:
const env = process.env;
const aws = require("aws-sdk");
const Lambda = new aws.Lambda();
const S3 = new aws.S3();
exports.main = (event, context, callback) => {
const params = {
FunctionName: "sendHealthData",
InvocationType: "RequestResponse",
Payload: JSON.stringify(event)
}
Lambda.invoke(params, function(error, remainingHealthData) {
if (error) {
reject(error);
}
else {
console.log("Remaining: " + remainingHealthData["Payload"]);
if (!remainingHealthData["Payload"]) {
reject(new Error("Payload is null"));
}
else {
resolve(remainingHealthData);
}
}
});
}
А это sendHealthData
:
exports.main = async (event, context, callback) => {
callback(null, "Sent Health Data!");
}
remainingHealthData["Payload"]
равен нулю каждый раз.
Выход console.log(JSON.stringify(remainingHealthData))
:
{"StatusCode":200,"Payload":'null'}
Когда я вызываю sendHealthData
- serverless invoke --function sendHealthData
, я получаю ожидаемый результат: «Отправленные данные о здоровье!»
Я получил ожидаемый ответ только один раз: когда я изменил время ожидания функции sendHealthData
. Но странно то, что я изменил его на меньшее значение. Это было 10, и я изменил его на 6.