
AWS LambdaがS3バケットをコードストレージとして直接参照可能に:容量制限の解消とデプロイ高速化
AIによる解説
要約
AWS Lambdaは、Amazon S3バケットをコードストレージとして直接参照する「セルフマネージド・コードストレージ」機能の提供を開始しました。これにより、Lambdaがデプロイパッケージを中間コピーとして作成する必要がなくなり、コードストレージの容量制限(従来はリージョンあたり75GB、現在はデフォルトで300GBに引き上げ)の影響を受けずに、S3バケットの容量に応じて関数やレイヤーのコードを保存できるようになります。利用には S3ObjectStorageMode=REFERENCE パラメータを使用し、Lambdaサービスプリンシパルに対して s3:GetObject および s3:GetObjectVersion 権限を付与する必要があります。本機能はすべての商用AWSリージョンで利用可能です。
エンジニアへのヒント
🚀 エンジニアへの影響と運用上のポイント
Problem/Solution: なぜこの機能が必要だったのか
大規模なサーバーレス構成において、多数の関数やLambdaレイヤーを運用している場合、リージョンごとのコードストレージ容量制限(従来は75GB)が大きな障壁となっていました。これまでは容量不足の際にAWSサポートへのクォータ引き上げ申請が必要でしたが、本機能により、S3をソースとして直接参照することで、Lambda管理ストレージの容量制限を実質的に回避できます。また、デプロイ時のコピー工程が省略されるため、デプロイメント・レイテンシの低減も期待できます。
Japan Context: 日本国内リージョンの状況
リサーチ結果に基づくと、本機能は東京リージョン(ap-northeast-1)および大阪リージョン(ap-northeast-3)を含むすべての商用AWSリージョンで利用可能です。国内のプロジェクトでも、容量制限の懸念がある大規模構成において、即座に導入検討が可能です。
Practical Advice: 運用・コスト・セキュリティの注意点
- コスト管理: Lambda追加料金は発生しませんが、コードが格納されているS3バケットのストレージ料金、およびリージョンを跨ぐ場合のデータ転送コストが発生します。**S3のストレージクラス(Glacierを除く)**を利用する場合、コスト最適化が可能です。
- セキュリティ: 最小権限の原則に基づき、Lambdaサービスプリンシパル(
lambda.amazonaws.com)に対して、対象のS3バケットまたはプレフィックスに対してのみs3:GetObjectとs3:GetObjectVersion権限を付与してください。また、暗号化(SSE-S3/SSE-KMS)を利用する場合は、Lambdaの実行ロールがKMSキーにアクセスできることを確認してください。 - デプロイの安全性: S3オブジェクトを直接参照するため、デプロイ後にS3上のオブジェクトを書き換えると、稼働中の関数に影響を与える可能性があります。S3のバージョニングを有効化し、特定のバージョンを指定して参照することを推奨します。
Next Action: まず何を試すべきか
- 権限設定の検証: テスト用S3バケットを作成し、Lambdaサービスプリンシパルへの適切なIAM権限(
s3:GetObject等)を) - デプロイメント・パイプラインの検証: AWS CLI, CloudFormation, SAM, SDKs を用いて
S3ObjectStorageMode=REFERENCEを設定し、コールドスタート時のレイテンシがS3参照型に💡
Reference: AWS Lambda Developer Guide (Self-Managed Code Storage) AWS Official Announcement
次に読む
新着記事記事の関連性を手がかりに、次の情報を探せます。
保存にはログインが必要です。