Aws lambda NodeJS:AWS SDK V3:未从lambda函数接收任何响应数据
我正在尝试使用v3 javascript sdk调用AWS Lambda函数,但在获得任何有意义的响应时遇到问题 我的代码看起来如此Aws lambda NodeJS:AWS SDK V3:未从lambda函数接收任何响应数据,aws-lambda,aws-sdk-js,Aws Lambda,Aws Sdk Js,我正在尝试使用v3 javascript sdk调用AWS Lambda函数,但在获得任何有意义的响应时遇到问题 我的代码看起来如此 const { Lambda } = require("@aws-sdk/client-lambda"); const client = new Lambda(); const params = { FunctionName: "MyLamdaFuncton", Payload: JSON.stringi
const { Lambda } = require("@aws-sdk/client-lambda");
const client = new Lambda();
const params = {
FunctionName: "MyLamdaFuncton",
Payload: JSON.stringify({ "action": "do_something" }),
InvocationType: "Event"
};
client.invoke(params)
.then((response) => {
console.log(JSON.stringify(response,null,4));
})
.catch((err) => {
console.error(err);
})
通过检查CloudWatch日志,我可以确认lambda函数的工作方式为EXEPCED。然而,这是我在NodeJS代码中得到的响应
{
"$metadata": {
"httpStatusCode": 202,
"requestId": "d6ba189d-9156-4f01-bd51-efe34a66fe34",
"attempts": 1,
"totalRetryDelay": 0
},
"Payload": {}
}
如何从Lambda函数获取实际响应和状态
如果我更改上面的有效负载,故意在Lambda中抛出异常,控制台中的响应仍然完全相同
更新:
Lambda函数是用Ruby编写的。返回的响应如下所示
const { Lambda } = require("@aws-sdk/client-lambda");
const client = new Lambda();
const params = {
FunctionName: "MyLamdaFuncton",
Payload: JSON.stringify({ "action": "do_something" }),
InvocationType: "Event"
};
client.invoke(params)
.then((response) => {
console.log(JSON.stringify(response,null,4));
})
.catch((err) => {
console.error(err);
})
{statusCode:200,body:JSON.generate(response.success?}
其中“响应”来自它内部调用的另一个服务。我已经知道我做错了什么。问题是“调用类型”。我把它改成了 调用类型:“请求响应” 然后我不得不像这样提取响应数据
const { Lambda } = require("@aws-sdk/client-lambda");
const client = new Lambda();
const params = {
FunctionName: "MyLamdaFuncton",
Payload: JSON.stringify({ "action": "do_something" }),
InvocationType: "Event"
};
client.invoke(params)
.then((response) => {
console.log(JSON.stringify(response,null,4));
})
.catch((err) => {
console.error(err);
})
const response_data=JSON.parse(新的TextDecoder(“utf-8”).decode(response.Payload))提供lambda函数返回响应的方式。谢谢,这非常有效。