Lambda 関数のレスポンスストリーミング - AWS Lambda

Lambda 関数のレスポンスストリーミング

Lambda 関数 URL を設定して、レスポンスペイロードをクライアントにストリーミングで返すようにできます。レスポンスストリーミングは、最初のバイトまでの時間 (TTFB) のパフォーマンスを向上させることで、レイテンシーの影響を受けやすいアプリケーションに役立ちます。これは、レスポンスの一部が利用可能になったときにクライアントに返送できるためです。さらに、レスポンスストリーミングを使用して、より大きなペイロードを返す関数を構築できます。レスポンスストリームのペイロードには、バッファされるレスポンスの 6 MB と比較して 20 MB のソフトリミットがあります。応答をストリーミングするということは、関数が応答全体をメモリに収める必要がないことも意味します。応答サイズが非常に大きい場合は、関数に設定する必要のあるメモリ量を減らすことができます。

Lambda が応答をストリーミングする速度は、応答サイズによって異なります。関数の応答では、最初の 6 MB のストリーミングレートには上限がありません。応答が 6 MB を超える場合、残りの応答には帯域幅の上限が適用されます。ストリーミング帯域幅の詳細については、レスポンスストリーミングの帯域幅制限 を参照してください。

ストリーミングレスポンスにはコストが発生します。詳細については、AWS Lambda 料金を参照してください。

Lambda は Node.js マネージドランタイムでのレスポンスストリーミングをサポートしています。その他の言語の場合は、カスタムランタイム API 統合を備えたカスタムランタイムを使用してレスポンスをストリーミングするか、Lambda Web Adapter を使用することができます。Lambda  関数 URL、AWS SDK、または Lambda InvokeWithResponseStream API を使用してレスポンスをストリーミングできます。

注記

Lambda コンソールで関数をテストするとき、レスポンスは常にバッファリングされた状態で表示されます。

レスポンスストリーミングの帯域幅制限

関数のレスポンスペイロードの最初の 6 MB の帯域幅には上限がありません。この最初のバースト後、Lambda はレスポンスを最大 2 Mbps のレートでストリーミングします。関数のレスポンスが 6 MB を超えない場合、この帯域幅制限は適用されません。

注記

帯域幅制限は関数のレスポンスペイロードにのみ適用され、関数によるネットワークアクセスには適用されません。

上限のない帯域幅は、関数の処理速度を含む多くの要素によって異なります。通常、関数のレスポンスでは、最初の 6 MB で 2 Mbps を超えるレートが期待できます。関数が AWS 外部の宛先にレスポンスをストリーミングする場合、ストリーミングレートは外部インターネット接続の速度にも依存します。