みなさん、こんばんは。小寺です。
AWS Lambdaでストリーミングな応答に対応するようになりました。
https://aws.amazon.com/about-aws/whats-new/2023/04/aws-lambda-response-payload-streaming/
Lambdaってどんな前提で使われていたか?
AWS Lambdaは応答サイズの上限が従来は6MBの制限がありました。
また、Lambda サービス内のメモリに完全にバッファリングされた後、レスポンス全体を返すようになっていました。
レスポンス全体が利用可能になるまで、エンド ユーザーに結果が表示されないことを意味しています。
応答サイズとバッファを持つ機能的な制限にがあるため、Lambda は、データ集約型またはレイテンシーの影響を受けやすいユースケースでは使いにくいケースも会ったかと思います。
アップデートで変わったこと
AWS Lambdaはアプリケーションのレスポンス時間を短縮する新機能として「応答ストリーミング」が発表されました。
「レスポンスストリーミング機能」により、完全にアプリの実行結果のバッファリングされた応答を待つのではなく、準備が整うとすぐに関数が部分的な応答をクライアントに送信できるようにすることで、最初のバイトまでの時間 (TTFB) を短縮することができます。
数秒のTTFBがミリ秒に短縮されるようになりました。
その結果、応答サイズの上限が従来の6MBではなく20MBまでの対応となるためより大きなレスポンスを返すことができ、ストリーミングされた応答の最大スループットは 2MiB/秒となっています!
レスポンス ストリーミングを有効にするには、関数が書き込み可能な新しい関数を準備する必要があります。また、必要に応じて応答の Content-Type ヘッダーを設定できます。
「レスポンスストリーミング機能」は、GA時点では起動時に NodeJS v14.x、v16.x、および v18.x をサポートしています。
Lambda 関数から処理およびストリーミングされたバイトに対して課金されるよう、課金の考え方も変更になっています。
正式な料金情報は「英語」に切り替えして確認ください。(本執筆時点では日本語では表示がされないです)
対象リージョン
以下のリージョンで利用可能です。
・US East (Ohio)
・US East (N. Virginia)
・US West (N. California)
・US West (Oregon)
・Canada (Central)
・Europe (Ireland)
・Europe (London)
・Europe (Paris)
・Europe (Frankfurt)
・Europe (Stockholm)
・Europe (Milan)
・Middle East (Bahrain)
・Africa (Cape Town)
・Asia Pacific (Hong Kong)
・Asia Pacific (Tokyo)
・Asia Pacific (Osaka)
・Asia Pacific (Seoul)
・Asia Pacific (Singapore)
・Asia Pacific (Sydney)
・Asia Pacific (Jakarta)
・Asia Pacific (Mumbai)
・South America (São Paulo)
まとめ
「レスポンスストリーミング機能」なるものが発表されました。
追加機能の利用には追加料金が課金されるようになっています。Lambdaの活用が進みそうなアップデートですね。