2

我在 api 网关中遇到了一个奇怪的 lambda 集成问题(尝试代理以及相同的问题)

lambda 首先命中 AppSync 并在错误时返回 JSON 内容或在成功时返回 XLXS 文件。

在 API 网关测试控制台上进行测试时,它会按预期返回状态 200 和二进制结果。但是当我通过邮递员在外部尝试它时它失败了。

更多信息 :

集成类型:Lambda

成功响应:

response = buffer.toString("base64");

错误响应:

response= JSON.stringify(err);

无服务器 apigateway 设置:

exportXls: 
handler: ./src/apiGatewayLambdas/exportxls/exportXls.handler
role:  AppSyncLambdaRole 
events:
    - http:
        path: /api/exportxls
        method: post
        integration: lambda

        contentHandling: CONVERT_TO_BINARY
4

1 回答 1

0

显然,带有 lambda 或代理集成的 Apigateway 将正文编码为 base64。所以我将我的 lambda 更改为

let buffer = new Buffer(_event.body, "base64");
let body = buffer.toString("ascii");
body = JSON.parse(body);

一切都按预期工作。

于 2020-06-09T09:14:22.603 回答