2017-01-10 117 views
2

截至2016年11月,我明白API网关现在支持二进制媒体类型。是否有可能从一个lambda代理返回压缩的HTTP?AWS API网关压缩响应

我有一个快速js应用程序需要返回压缩输出(从数据库查询),否则响应正文超过lambda响应正文限制。

谢谢!

+0

不幸的是,API网关目前不支持HTTP压缩。但是,这是考虑到未来的发展。并且不支持将来自Lambda的二进制输出传递给API网关。 –

回答

1

您可以将base64编码的字符串中的压缩数据从Lambda返回到API网关。

然后,您可以在返回到客户端之前使用二进制媒体类型功能将base64编码的字符串转换回二进制数据。

如果您希望强制API网关返回二进制数据而不是尊重accept头,则可以通过CLI将集成响应中的contentHandling属性设置为CONVENT_TO_BINARY

aws apigateway update-integration-response \ 
    --rest-api-id <api-id> \ 
    --resource-id <resource-id> \ 
    --http-method GET \ 
    --status-code 200 \ 
    --patch-operations '[{"op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY"}]' 

See example of binary support with Lambda.

+0

谢谢。因此,如果我有一个我使用gzip(content-type:application/json,content-encoding:gzip)的json字符串,并将其作为base64编码的字符串发送,则API Gateway将能够将此转换回二进制文件并传递给它我的客户? – galacticpresident

+0

API网关不会解压缩您的数据并将其传递给您的客户端。您的客户需要知道如何处理gzip数据。 –

+1

谢谢!我不得不破解在客户端解码/ ungzip的方式,但这工作。 – galacticpresident