Lambda の S3 Files 読み込み、レイテンシ優先か速度優先か選べるようになったよ!
やっほー、しぃちゃんだよ!今日は Lambda まわりの地味だけど嬉しいアップデートを見つけたから紹介するね!
AWS What's Newなにが発表されたの?
AWS What's New によると、AWS Lambda が Amazon S3 Files の「direct read」設定に対応したよ。S3 Files をファイルシステムのように使う Lambda 関数で、ファイルの読み込み元を明示的にコントロールできるようになったの。具体的には、次のどちらを使うかを関数ごとに選べるよ。
- S3 Files の高性能ストレージ(低レイテンシー向き)
- 元の S3 バケットから直接読む(大きいファイルの高スループット向き)
S3 Files は、データ処理パイプラインやステートフルなエージェントワークロードなど、ファイルシステムの手軽さと S3 のスケーラビリティ・耐久性・コスト効率を両立させたい場面で使われているサービスだよ。
今までどうだったの?
これまでも S3 Files は、低レイテンシー向けの高性能ストレージと、大規模読み込みで高スループットを出す S3 バケット直読を自動的に使い分けてくれていたの。だけど、S3 バケットからの直読は「関数のメモリが 512 MB 以上」という条件付きでしか有効にならなかったんだって。つまり、メモリ設定を変えたくないのに直読の挙動だけ変えたい、というケースではコントロールが効かなかったんだよね。アプリケーションの要件に合わせて読み込みパフォーマンスを最適化したくても、その手段がなかったの。
これで何が変わるの?
今回のアップデートで、関数のメモリサイズとは切り離して、direct read を明示的に有効・無効にできるようになったよ。
- 有効にした場合: 1 MB 以上のファイルは S3 バケットから直接読み込まれて最大スループットを狙える。1 MB 未満の小さいファイルは高性能ストレージ経由で処理される
- 無効にした場合: すべての読み込みが高性能ストレージ経由になる(低レイテンシー優先)
大きいファイルをたくさん読むデータ処理パイプラインならスループット重視で有効化、小さいファイルを頻繁に読むようなレイテンシーシビアなワークロードなら無効化、というふうに用途に応じて選べるのが嬉しいポイントだね。
深く潜ってみよう
設定は AWS Management Console・AWS CLI・AWS SDK・AWS CloudFormation から行えるよ。追加料金はかからず、Lambda と S3 Files それぞれの通常料金の範囲内で使えるとのことなの。
対応リージョンについても言及があって、AWS の商用リージョンと AWS GovCloud(US-East / US-West)で利用できるけど、次のリージョンは対象外だよ。
- アジアパシフィック(ニュージーランド)
- 中東(バーレーン)
- 中東(UAE)
分かれ目になる「1 MB」というしきい値がはっきり書かれているのは地味に助かるポイントだと思う。大きいファイル中心のワークロードか、小さいファイル中心のワークロードかで、direct read を入れるかどうかの判断材料になるね。
まとめ
- Lambda から S3 Files を使うときの読み込み元を、メモリサイズに関係なく明示的に設定できるようになった
- 有効化すると 1 MB 以上のファイルは S3 バケットから直接読んでスループット重視、それ未満は高性能ストレージ経由
- 無効化するとすべて高性能ストレージ経由でレイテンシー重視
- Console・CLI・SDK・CloudFormation から設定可能で追加料金なし
- 一部リージョン(ニュージーランド、バーレーン、UAE)は非対応
大きなファイルをガンガン処理するデータパイプラインを Lambda + S3 Files で組んでる人や、逆にレイテンシーを詰めたいステートフルなエージェントワークロードを作ってる人には、地味だけど刺さるアップデートだと思うよ!