AWS Lambda -> API Gateway 中的 Gzip 响应

kjs*_*js3 5 gzip amazon-web-services node.js aws-lambda aws-api-gateway

我似乎无法通过 API 网关从 Lambda 获得 gzipped 响应。我在 Lambda 中压缩我的响应并在 API Gateway 中设置“Content-Encoding”标头。

我不确定哪个部分是问题。

这是从 Lambda 到 API Gateway 的最终返回:

zlib.gzip(myJsonString, function (err, buffer) {
    if ( err ) { return handleError(err, context) }

    return context.succeed(buffer.toString('binary'));
});
Run Code Online (Sandbox Code Playgroud)

我试过只传递缓冲区,对它进行 base64 编码等。

从 Chrome 发出 GET 请求:如果我从网关中删除 Content-Encoding 标头,我会在浏览器中获得 binary/base64/buffer 数组作为字符串响应。

如果我设置标头,GET 请求将完全失败且没有响应,但在 AWS 控制台中进行测试会返回带有引号的有效负载。

我不知道这里发生了什么,但如果亚马逊真的希望人们使用这个东西,我们需要能够压缩我们的响应。似乎它应该只是 API Gateway 中的一个复选框,然后我可以简单地从 Lambda 返回一个 JSON 字符串并自动压缩它。

Vla*_*iev 2

截至 2016 年 11 月 17 日 - API Gateway 现在支持二进制数据

如果你明白了请告诉我!