2017-01-10 28 views
2

2016年11月現在、API Gatewayはバイナリメディアタイプをサポートしています。ラムダプロキシから圧縮されたHTTPを返すことは可能ですか?AWS APIゲートウェイ圧縮レスポンス

私は、圧縮された出力(データベースクエリからの)を返す必要があるエクスプレスjsアプリケーションを持っています。それ以外の場合、応答本体はラムダ応答本体の制限を超えます。

ありがとうございます!

+0

残念ながら、APIゲートウェイは、現在、HTTP圧縮をサポートしていません。しかし、それは将来の発展のために考慮されている。また、Lambdaのバイナリ出力をAPI Gatewayに渡すことはサポートされていません。 –

答えて

1

ラムダからAPIゲートウェイへのbase64でエンコードされた文字列の圧縮データを返すことができます。

次に、バイナリメディアタイプ機能を使用して、クライアントに返す前にbase64でエンコードされた文字列をバイナリデータに変換することができます。

Acceptヘッダーを尊重する代わりに、APIゲートウェイがバイナリデータを返すようにする場合は、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ゲートウェイはこれをバイナリに変換して渡すことができます私の顧客? – galacticpresident

+0

APIゲートウェイはデータを解凍してクライアントに渡しません。あなたのクライアントは、gzipデータをどう扱うべきかを知る必要があります。 –

+1

ありがとう!私はクライアントを解読/解凍する方法をハックアップしなければならなかったが、これはうまくいった。 – galacticpresident

関連する問題