AWS Lambda レイヤーとは?共通ライブラリ管理のベストプラクティス
Lambda レイヤーは 複数の Lambda 関数で共有するコードや依存ライブラリを別パッケージで管理する機能。関数本体のサイズを小さく保ち、共通ライブラリの一括更新・バージョン管理が可能。最大 5 レイヤーを 1 関数に重ね、合計 250 MB(解凍後)まで利用できる。...
Lambda 関数で使う共通ライブラリ・カスタムランタイム・データを「レイヤー」として分離・再利用する仕組み。
1. 概要(端的に)
Lambda レイヤーは 複数の Lambda 関数で共有するコードや依存ライブラリを別パッケージで管理する機能。関数本体のサイズを小さく保ち、共通ライブラリの一括更新・バージョン管理が可能。最大 5 レイヤーを 1 関数に重ね、合計 250 MB(解凍後)まで利用できる。
2. 何ができるか
- 共通ライブラリの再利用:複数関数で同じ npm/pip パッケージを共有
- 関数本体の軽量化:依存を分離し、ビジネスロジックだけを関数に
- カスタムランタイム提供:標準にない言語(PHP・Rust・Bash 等)を持ち込み
- バージョン管理:レイヤーは v1, v2, v3… と履歴管理
- クロスアカウント共有:ARN 経由で他アカウントから利用可
- AWS 提供レイヤー:boto3 最新版・公式 SDK・Powertools など
レイヤーに置ける内容
- 言語別ライブラリ(npm package, pip package, jar 等)
- カスタムランタイム
- 共通設定ファイル
- バイナリ(FFmpeg・ImageMagick 等)
3. 特徴
| 観点 | 特徴 |
|---|---|
| 再利用性 | 1 レイヤーを多数関数で共有 |
| デプロイ高速化 | 関数本体が小さくなり、コードのアップロードが速い |
| 依存の集中管理 | ライブラリ更新は 1 箇所で済む |
| 最大数 | 1 関数に 5 レイヤー |
| 合計サイズ | 解凍後 250 MB 上限(関数 + 全レイヤー) |
| 言語別パス | 言語ごとに決まったディレクトリに配置 |
言語別の配置パス
| 言語 | パス |
|---|---|
| Node.js | /opt/nodejs/node_modules |
| Python | /opt/python/lib/python3.x/site-packages |
| Java | /opt/java/lib |
| Ruby | /opt/ruby/gems/3.x.0 |
| カスタムランタイム | /opt/bootstrap |
4. 仕組み
レイヤーは ZIP ファイル として AWS にアップロードし、関数にアタッチする時に /opt ディレクトリに展開される。
構成要素
- レイヤー本体:ZIP(最大 50 MB アップロード、解凍後 250 MB)
- 互換ランタイム:このレイヤーが対応する言語/ランタイム
- 互換アーキテクチャ:x86_64 / arm64
- バージョン:レイヤーごとに v1, v2… と管理
- ARN:
arn:aws:lambda:region:account:layer:name:version
動作の流れ
- ライブラリ群を ZIP にパッケージング
aws lambda publish-layer-versionでアップロード- Lambda 関数の設定でレイヤー ARN を指定
- 関数実行時、Lambda が
/optにレイヤーを展開 - 関数コードから言語標準のパスでライブラリを import
注意点
- コード変更ごとに再 publish が必要(バージョンが上がる)
- 削除されたレイヤーは関数から外せない場合あり(ARN は残る)
- 依存衝突:複数レイヤーで同じパッケージが入ると先勝ち
5. ユースケース
ユースケース 1:複数 Lambda での共通 SDK 統一
全関数で同じバージョンの boto3 を使いたい → レイヤーに置けば一括更新。
ユースケース 2:FFmpeg / ImageMagick の利用
動画変換・画像処理のバイナリをレイヤーに同梱。
ユースケース 3:AWS Lambda Powertools 利用
ロギング・トレーシング・メトリクスのベストプラクティス実装をレイヤーで導入。
ユースケース 4:カスタムランタイム
PHP・Rust・Bash・Cobol 等、Lambda 標準にない言語の持ち込み。
ユースケース 5:機密情報の集中管理
(非推奨。Secrets Manager / Parameter Store の方が安全)
6. 関連用語
- Lambda — レイヤーをアタッチする本体
- Lambda-Concurrency — 関数の同時実行数
- CloudFormation — レイヤーの IaC 管理
- CDK — レイヤーの IaC 管理
7. 関連サイト
AWS 公式
参考
🎓 試験での出題傾向
| 試験 | 重要度 | 主な出題パターン |
|---|---|---|
| CLF | 低 | 出題稀 |
| SAA | 中 | サーバーレス設計の文脈で「共通ライブラリの管理 → レイヤー」 |
| DVA | 高 | Lambda 開発のベストプラクティス、バージョン管理 |
| SOA | 低 | レイヤーの運用管理 |