Aws lambda NodeJS:AWS SDK V3:未从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

我正在尝试使用v3 javascript sdk调用AWS Lambda函数,但在获得任何有意义的响应时遇到问题

我的代码看起来如此

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函数返回响应的方式。谢谢,这非常有效。