【发布时间】:2015-12-04 12:35:11
【问题描述】:
我似乎无法通过 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 字符串并自动压缩它。
【问题讨论】:
-
我也有同样的问题,这至少可以说是令人失望的:/ 为什么不是每个人都使用 APIG 作为 REST API 来抱怨这个? :)
标签: node.js amazon-web-services gzip aws-lambda aws-api-gateway