はじめに
サーバーレスアーキテクチャの中核を担うAWS Lambdaに、非常に魅力的なアップデートが発表されました!
これまでAWS Lambdaのネットワーク帯域幅は、メモリ設定に関わらず一定の制限(最大625 Mbps)が存在していましたが、今回のアップデートにより、VPC外で動作するLambda関数のネットワーク帯域幅が、割り当てメモリ量に応じて最大3,000 Mbps(3 Gbps)まで自動でスケールアップできるようになりました。
大容量データの転送やレイテンシに敏感なワークロードを扱っているエンジニアにとって、Lambdaの実行時間を大幅に短縮し、コストを最適化するための強力な武器が登場しました。本記事では、この新機能の概要、メリット、具体的なユースケース、注意点について分かりやすく解説します。
この機能の概要とメリット
今回のアップデートにより、VPC外(Outside a VPC)に配置された、メモリが2 GB以上に設定されているLambda関数において、メモリの大きさに比例してネットワーク帯域幅がスケールするようになります。
メモリとネットワーク帯域幅のスケーリング関係
ネットワーク帯域幅は、以下のようにメモリ設定に応じて自動的にスケールします。
- 2 GB設定時: 625 Mbps
- 10 GB設定時: 最大 3,000 Mbps (3 Gbps)
2 GBから10 GBの間で、割り当てたメモリ量に比例して帯域幅が段階的に向上します。
主なメリット
- 処理時間の短縮: 大容量ファイルを外部(S3や外部APIなど)からダウンロードする際のネットワークボトルネックが解消され、関数の実行時間が劇的に短縮されます。
- コスト(ミリ秒課金)の削減: Lambdaは「実行時間 × メモリ量」で課金されるため、転送速度の向上によって実行時間が短縮されれば、結果として1回あたりの実行コストを抑えられます。
- ユーザー体験(UX)の向上: 同期処理でAPIのバックエンドとして動作しているLambdaが高速化することで、フロントエンドへのレスポンスが早くなり、エンドユーザーの体験が向上します。
- 追加料金なし: このスケーラブルなネットワーク帯域幅の利用に追加の基本料金はかかりません。
想定されるユースケース
この機能は、以下のような「大量のデータをLambda関数内に持ち込んで処理する」ワークロードで最大の効果を発揮します。
1. S3からの大容量データ・メディア処理
Amazon S3から数GB〜数十GB規模の動画、画像、あるいは巨大なCSVやParquetファイルをダウンロードして、解凍、変換、フィルタリングなどの処理を行うデータパイプラインに最適です。
2. 機械学習(ML)モデルのロードと推論
推論用の大規模な機械学習モデル(数百MBから数GBのパラメータファイル)をS3等からLambdaのコンテナ起動時にロードする際、ダウンロード時間がネックになることがありました。この帯域幅拡張により、コールドスタート時のモデル読み込み時間を最小限に抑えることができます。
3. 大規模APIクライアント(外部連携バッチ)
外部のデータソースやサードパーティのAPIからテラバイト級のデータを一括で取得し、加工して別システムに転送するバッチ処理などで、ネットワークの詰まりを防ぎます。
注意点や従来の機能との違い
本機能を利用するにあたり、いくつかの重要な技術的仕様と注意点があります。
1. VPC外(Outside a VPC)の関数のみが対象
この高速なスケーラブル帯域幅は、VPCに接続されていないLambda関数(VPC外で動作する関数)のみが対象です。VPC内部のリソース(RDSやElastiCacheなど)に接続するためにVPC設定を行っている関数は、今回のアップデートの恩恵を受けられません。
2. 事前にAWS Service Quotasでの申請(有効化)が必要
デフォルトでは有効になっていません。利用を開始するには、AWSマネジメントコンソールの「Service Quotas」から申請を行う必要があります。
AWS CLI等からクォータのステータスを確認・申請する場合は、以下のクォータ名を対象とします。
クォータ名:Network bandwidth per execution environment
サービスコード:lambda
3. メモリ割り当てが2 GB以上必要
ネットワーク帯域幅がスケールし始めるのは、メモリ設定が「2 GB以上」の場合です。1.5 GB以下に設定されている関数については、従来通りの帯域幅(最大625 Mbps)にとどまります。
まとめ
今回のAWS Lambdaのネットワーク帯域幅拡張は、サーバーレスの弱点と言われがちだった「大容量データの取り扱い」を劇的に改善する素晴らしいアップデートです。
特に、「処理を早く終わらせるためにメモリを増やしたのに、ネットワークがボトルネックになって速度が変わらない」というジレンマに陥っていた開発者にとって、メモリを増やす正当な理由(帯域幅の向上)ができました。
Service Quotasから申請するだけで、追加コストなしで適用可能なため、S3からのデータ転送やモデルロードの遅さに悩んでいるプロジェクトがあれば、ぜひクォータ申請を行い、メモリ構成を見直してその実力を体感してみてください!