【问题标题】:NodeJS: AWS SDK V3: Not receiving any response data from lambda functionNodeJS:AWS SDK V3:未从 lambda 函数接收任何响应数据
【发布时间】:2021-05-06 04:24:47
【问题描述】:

我正在尝试使用 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 函数按预期工作。然而,这是我在 NodeJS 代码中得到的响应......

{
    "$metadata": {
        "httpStatusCode": 202,
        "requestId": "d6ba189d-9156-4f01-bd51-efe34a66fe34",
        "attempts": 1,
        "totalRetryDelay": 0
    },
    "Payload": {}
}

如何从 Lambda 函数获取实际响应和状态?

如果我更改上面的有效负载以故意在我的 Lambda 中抛出异常,控制台中的响应仍然完全相同。

更新: Lambda 函数是用 Ruby 编写的。响应是这样返回的......

{ statusCode: 200, body: JSON.generate(response.success?) }

“响应”来自它内部调用的另一个服务。

【问题讨论】:

  • 提供 lambda 函数返回响应的方式。

标签: aws-lambda aws-sdk-js


【解决方案1】:

我已经弄清楚我做错了什么。问题是“InvocationType”。我通过更改为...得到了它的工作。

InvocationType:“请求响应”

然后我不得不像这样提取响应数据......

const response_data = JSON.parse(new TextDecoder("utf-8").decode(response.Payload))

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2018-10-16
    • 2021-12-09
    • 1970-01-01
    • 2017-08-22
    • 2019-09-25
    相关资源
    最近更新 更多