gpt4 book ai didi

node.js - @aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串

转载 作者:行者123 更新时间:2023-12-04 12:04:49 26 4
gpt4 key购买 nike

我正在使用 @aws-sdk/client-lambda用于调用 lambda 的 npm 包。我有两个 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); 行返回的。 :
Response
我看了 AWS SDK Website它看起来像 Payload返回 Uint8Array .我想这是因为它来自一个 promise ?
我试过做 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)正在正确返回数据。谢谢。

最佳答案

好的,我找到了让这个工作的方法。
您必须指定一个文本编码器:

const asciiDecoder = new TextDecoder('ascii');
然后解码它,看起来像这样:
const data = asciiDecoder.decode(Payload);
我已登录 issue在他们的存储库中询问为什么这不包含在模块中。我将发布有关此方面任何动向的更新。

关于node.js - @aws-sdk/client-lambda] - 调用 Lambda - Unit8Array 中的有效负载响应 - 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67077173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com