我似乎无法通过 API 网关从 Lambda 获得压缩响应。我在 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'));
});
我试过只传递缓冲区、base64 编码等。
从 Chrome 发出 GET 请求:如果我从网关中删除 Content-Encoding 标头,我会在浏览器中获得 binary/base64/buffer 数组作为字符串响应。
如果我设置标头,则 GET 请求完全失败,没有响应,但在 AWS 控制台中进行测试会返回带有引号的有效负载。
我不知道这里发生了什么,但如果亚马逊真的希望人们使用这个东西,我们需要能够压缩我们的响应。似乎它应该只是 API Gateway 中的一个复选框,然后我可以简单地从 Lambda 返回一个 JSON 字符串并自动压缩它。