AWS Lambda nodejs SDK V3 负载解析问题

问题描述 投票:0回答:1

最近我将我的工作 Lambda 代码更新为 nodejs18.x,以应对今年夏天即将到来的弃用,并借此机会将 aws sdk 版本升级到 3,因为默认情况下 18.x 运行时不附带 sdk v2。这主要是一个无缝过渡,但 Lambda 客户端和调用命令导致了一些非常不一致的行为,我无法解决。在发现 v3 lambda 客户端返回 int8array 并使用缓冲区解码响应后,我有时仍然会收到此错误:

语法错误:意外的标记,在 JSON 中的位置 3

这有时会以

invoke error
的形式出现,并具有相同的消息,但 lambda 调用文档没有任何用于解决此问题的信息。

代码:

const data = await lambdaClient.send(new InvokeCommand(params));
let response = JSON.parse(Buffer.from(data.Payload).toString());

当在相同代码上使用

SAM LOCAL INVOKE
时,相同的有效负载始终有效。

所以我的问题是,什么会导致 JSON 变得无法解析?

编辑上下文:我们在升级 sdk 版本之前没有任何问题。我们返回 json 对象

aws-lambda aws-sdk-nodejs
1个回答
0
投票

看起来,当被调用的 lambda 抛出错误时,父 lambda 得到的响应具有“FunctionError: Unhandled”和不可解析的有效负载。这意味着调用新 lambda 的客户端不是问题,但在抛出错误和 int8array 有效负载之间,我们不再收到有意义的结果。

© www.soinside.com 2019 - 2024. All rights reserved.