2017-01-10 46 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