【问题标题】:@aws-sdk/client-lambda] - Invoke Lambda - Payload Response in Unit8Array - Convert to String@aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串
【发布时间】:2021-07-08 15:26:30
【问题描述】:

我正在使用@aws-sdk/client-lambda npm 包来调用 lambda。我有两个 Lambda。 Lambda A & Lambda B。Lambda A 正在尝试调用 Lambda B。

Lambda A 通过运行以下代码调用 Lambda B:

const { LambdaClient, InvokeCommand } = require('@aws-sdk/client-lambda');

module.exports = {
  getGitHubToken: async () => {
    const client = new LambdaClient({ region: process.env.REGION });

    const params = {
      FunctionName: process.env.GITHUB_TOKEN_FUNCTION,
      LogType: 'Tail',
      Payload: '',
    };

    const command = new InvokeCommand(params);

    try {
      const { Payload } = await client.send(command);
      console.log(Payload);
      return Payload;
    } catch (error) {
      console.error(error.message);
      throw error;
    }
  },
};

Lambda B 的预期响应应如下所示:

{
  statusCode: 200,
  body: JSON.stringify({
    token: '123',
  }),
};

但是,Payload 看起来是从 console.log(Payload); 行返回的:

我查看了AWS SDK Website,看起来Payload 返回了Uint8Array。我猜这是因为它来自一个承诺?

我尝试过Payload.toString(),但返回的只是Unit8Array 中的一串值。例如:

2021-04-13T14:32:04.874Z worker:success Payload: 123,34,115,116,97,116,117,115,67,111,100,101,34,58,50,48,48,44,34,98,111,100,121,34,58,34,123,92,34,116,111,107,101,110,92,34,58,92,34,103,104,115,95,111,114,101,51,65,109,99,122,86,85,74,122,66,52,90,68,104,57,122,122,85,118,119,52,51,50,111,67,71,48,50,75,121,79,69,72,92,34,125,34,125

我的问题:

如何将来自 Unit8Array 的数据解析为我期望从 Lambda 响应中获得的数据?哪个是 JSON 对象?

我已通过转到 CloudWatch 确认请求的 Lambda(在本例中为 Lambda B)正在正确返回数据。谢谢。

【问题讨论】:

    标签: node.js json amazon-web-services lambda aws-lambda


    【解决方案1】:

    好的,我找到了让它工作的方法。

    你必须指定一个文本编码器:

    const asciiDecoder = new TextDecoder('ascii');
    

    然后解码它看起来像这样:

    const data = asciiDecoder.decode(Payload);
    

    我在他们的存储库中记录了issue,询问为什么模块中不包含它。我将发布有关此方面的任何动态的更新。

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 2020-03-15
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2020-07-13
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多