API Gateway で圧縮されたペイロードで API レスポンスを受信する
圧縮が有効な API を作成する場合、クライアントは Accept-Encoding
ヘッダーをサポートされているコンテンツコーディングで指定することにより、圧縮されたレスポンスのペイロードを指定の形式で受信することを選択できます。
API Gateway は、次の条件が満たされた場合にのみレスポンスのペイロードを圧縮します。
-
着信リクエストには、サポートされているコンテンツコーディングと形式の
Accept-Encoding
ヘッダーがあります。注記
ヘッダーが設定されていない場合、デフォルト値は RFC 7231
で定義された *
です。このような場合、API Gateway はペイロードを圧縮しません。一部のブラウザまたはクライアントでは、Accept-Encoding
(Accept-Encoding:gzip, deflate, br
など) が、圧縮が有効なリクエストに自動的に追加されます。これにより、API Gateway でペイロードの圧縮を有効にすることができます。サポートされているAccept-Encoding
ヘッダー値の明示的な仕様がない場合、API Gateway はペイロードを圧縮しません。 -
minimumCompressionSize
は、圧縮を有効にするために API で設定されています。 -
統合レスポンスには
Content-Encoding
ヘッダーはありません。 -
統合レスポンスのペイロードのサイズは、適用可能なマッピングテンプレートが適用されると、指定された
minimumCompressionSize
値以上になります。
API Gateway はペイロードを圧縮する前に、統合レスポンス用に設定されたマッピングテンプレートを適用します。統合レスポンスに Content-Encoding
ヘッダーが含まれている場合、API Gateway は、統合レスポンスのペイロードはすでに圧縮されているとみなし、圧縮処理がスキップされます。
たとえば、PetStore API の例と次のリクエストがあります。
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept: application/json
バックエンドはリクエストに次のような圧縮されていない JSON ペイロードで応答します。
200 OK [ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
この出力を圧縮されたペイロードとして受け取るために、API クライアントは次のようにリクエストを送信できます。
GET /pets Host: {petstore-api-id}.execute-api.{region}.amazonaws.com Accept-Encoding:gzip
クライアントは、Content-Encoding
ヘッダーと次のような GZIP エンコードされたペイロードでレスポンスを受信します。
200 OK Content-Encoding:gzip ... ���RP� J�)JV �:P^IeA*������+(�L �X�YZ�ku0L0B7!9��C#�&����Y��a���^�X
レスポンスのペイロードが圧縮されると、圧縮されたデータサイズのみがデータ転送に対して課金されます。