API Gateway でプロキシ統合の統合レスポンスをストリーミングする
API Gateway が統合レスポンスを返す方法を制御するようにプロキシ統合を設定できます。デフォルトでは、API Gateway は送信を開始する前に完全なレスポンスを受信するのを待ちます。ただし、統合のレスポンス転送モードを STREAM に設定した場合、API Gateway はレスポンスが完全に計算されてからクライアントに送信されるまで待機しません。レスポンスストリーミングは、すべての REST API エンドポイントタイプで機能します。
以下のユースケースでレスポンスストリーミングを使用します。
-
チャットボットなどの生成 AI の最初のバイトまでの時間 (TTFB) を短縮します。
-
S3 の署名付き URL を使用せずに、大きなイメージ、ビデオ、または音楽ファイルをストリーミングします。
-
サーバー送信イベント (SSE) などの段階的な進行状況をレポートしながら、長時間実行されるオペレーションを実行します。
-
API Gateway の 10 MB のレスポンスペイロード制限を超えました。
統合タイムアウト制限の引き上げをリクエストせずに、API Gateway の 29 秒のタイムアウト制限を超えました。
バイナリメディアタイプを設定せずにバイナリペイロードを受け取ります。
レスポンスペイロードストリーミングに関する考慮事項
以下の考慮事項は、レスポンスペイロードストリーミングの使用に影響する可能性があります。
-
レスポンスペイロードストリーミングは、
HTTP_PROXYまたはAWS_PROXY統合タイプでのみ使用できます。これには、Lambda プロキシ統合と、HTTP_PROXY統合を使用するプライベート統合が含まれます。 デフォルトの転送モード設定は
BUFFEREDです。レスポンスストリーミングを使用するには、レスポンス転送モードをSTREAMに変更する必要があります。-
レスポンスストリーミングは REST API でのみサポートされます。
-
リクエストストリーミングはサポートされていません。
-
レスポンスは最大 15 分間ストリーミングできます。
ストリームはアイドルタイムアウトの対象となります。リージョンエンドポイントまたはプライベートエンドポイントの場合、タイムアウトは 5 分です。エッジ最適化エンドポイントの場合、タイムアウトは 30 秒です。
-
独自の CloudFront ディストリビューションでリージョン REST API のレスポンスストリーミングを使用する場合、CloudFront ディストリビューションのレスポンスタイムアウトを増やすことで、30 秒を超えるアイドルタイムアウトを実現できます。詳細については、「応答タイムアウト」を参照してください。
-
レスポンス転送モードが
STREAMに設定されている場合、API Gateway は統合レスポンス全体をバッファする必要がある機能をサポートできません。このため、以下の機能はレスポンスストリーミングではサポートされていません。エンドポイントキャッシュ
-
コンテンツのエンコーディング。統合レスポンスを圧縮する場合は、統合でこれを行います。
VTL によるレスポンス変換
-
各ストリーミングレスポンス内では、レスポンスペイロードの最初の 10MB は帯域幅制限の対象になりません。10MB を超えるレスポンスペイロードデータは 2MB/秒に制限されています。
-
クライアントと API Gateway 間、または API Gateway と Lambda 間の接続がタイムアウトにより閉じられた場合、Lambda 関数は引き続き実行される可能性があります。詳細については、「Lambda 関数のタイムアウトを設定する」を参照してください。
-
レスポンスストリーミングにはコストがかかります。詳細については、「API Gateway の料金
」を参照してください。