3

我似乎無法通過API網關獲得來自Lambda的gzip響應。 我在Lambda中編寫我的回覆並在API網關中設置「Content-Encoding」標頭。AWS Lambda中的Gzipped響應 - > API網關

我不確定哪一部分是問題。

下面是LAMBDA到API網關的最終回:

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

    return context.succeed(buffer.toString('binary')); 
}); 

我試着只是路過的緩衝,base64編碼它,等

使從Chrome中的GET請求: 如果我從網關中刪除Content-Encoding標頭我在瀏覽器中以二進制/ base64 /緩衝區數組作爲字符串響應。

如果我設置標頭,GET請求完全失敗,但沒有響應,但在AWS控制檯中進行測試時會返回帶有引號的有效負載。

我不知道這裏發生了什麼,但如果亞馬遜真的希望人們使用這個東西,我們需要能夠壓縮我們的反應。似乎它應該只是API網關中的一個複選框,然後我可以簡單地從Lambda返回一個JSON字符串並將其自動壓縮。

+0

我有同樣的問題,至少可以說這是令人失望的:/爲什麼不是每個人都在爲使用REST API的APIG抱怨呢? :) –

回答

1

不支持將二進制輸出從Lambda傳遞到API Gateway

同類問題已經answered here

2

至於2016年11月17日 - Binary Data Now Supported by API Gateway

讓我知道,如果你想通了這一點!

+0

關於這件事的任何消息? –

+0

@PedroBaptistaAfonso查看如何使用gzip的這個例子:https://github.com/awslabs/aws-serverless-express/pull/51 –