【发布时间】:2018-12-13 08:16:27
【问题描述】:
我有两个 lambda 函数,我需要从一个名为 receiveHealthData 的函数中调用一个名为 sendHealthData 的函数。我正在使用 Node.JS 8.10 和 Serverless 框架。
这是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'}
当我通过 serverless invoke --function sendHealthData 调用 sendHealthData 时,我得到了预期的结果:“已发送健康数据!”
我只得到了一次预期的响应:当我更改 sendHealthData 函数的超时时。但奇怪的是我把它改成了更小的值。原来是 10,我把它改成了 6。
【问题讨论】:
标签: node.js amazon-web-services aws-lambda serverless-framework serverless