# Lambda のコードストレージ上限、75GB から 300GB に拡大！自己管理 S3 参照でコピーもゼロに

みんな、しぃちゃんだよ！Lambda を大量運用してる人にとって地味だけど嬉しいアップデートを見つけたから紹介するね！

## なにが発表されたの？

AWS の What's New で、AWS Lambda が自己管理の Amazon S3 バケットをコードストレージとして使える self-managed code storage を発表したよ。自分の S3 バケットに置いたソースコードを Lambda が直接参照できるようになって、これまでのように Lambda がデプロイのたびに中間コピーを作る必要がなくなるの。

## 今までどうだったの？

従来、Lambda は関数やレイヤーを作成・更新するたびに、デプロイパッケージを Lambda 管理のストレージにコピーしていて、そのコピー分がアカウント・リージョンごとの 75 GB というコード保存上限にカウントされていたんだって。関数やレイヤーの数が多い人だと、この上限に達してサポートチケットで引き上げをお願いする必要があったの。

## これで何が変わるの？

self-managed code storage を使うと、Lambda はコピーを作らずに自分の S3 バケットを直接参照するから、バケットの容量が許す限りコードを置けるようになるよ。コピー処理が無くなる分、関数やレイヤーの作成・更新後のアクティベーション時間も短くなるの。デプロイパッケージの正本を自分のアカウントの S3 バケット一本にまとめられるのも地味に嬉しいポイントだよ。

追加の Lambda 料金はかからなくて、かかるのは通常の S3 ストレージ料金(リージョンをまたぐ場合は転送料金も)だけ。あわせて、Lambda 管理ストレージ側のデフォルト上限も 75 GB から 300 GB に引き上げられたから、self-managed を使わない人にとっても嬉しい変更だね。

## 深く潜ってみよう

有効化するには、関数やレイヤーの作成時に `S3ObjectStorageMode` パラメータを `REFERENCE` に設定するだけ。AWS CLI・CloudFormation・SAM・各言語の SDK から設定できるよ。あわせて、Lambda のサービスプリンシパルに対して、参照先の S3 バケットへの `s3:GetObject` と `s3:GetObjectVersion` の権限を付与しておく必要があるの。対応リージョンは全ての商用 AWS リージョンだよ。

## まとめ

- 自分の S3 バケットを Lambda のコードストレージとして直接参照できる self-managed code storage が登場
- `S3ObjectStorageMode` を `REFERENCE` に設定して有効化(`s3:GetObject` / `s3:GetObjectVersion` 権限が必要)
- コピー処理が無くなって、作成・更新後のアクティベーションが速くなる
- 追加の Lambda 料金なし、通常の S3 料金のみ
- Lambda 管理ストレージのデフォルト上限も 75 GB から 300 GB に拡大

大量の関数やレイヤーを運用していてコードストレージ上限に苦しんでた人には、待望のアップデートだね！
