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… と管理
  • ARNarn:aws:lambda:region:account:layer:name:version

動作の流れ

  1. ライブラリ群を ZIP にパッケージング
  2. aws lambda publish-layer-version でアップロード
  3. Lambda 関数の設定でレイヤー ARN を指定
  4. 関数実行時、Lambda が /opt にレイヤーを展開
  5. 関数コードから言語標準のパスでライブラリを 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. 関連用語


7. 関連サイト

AWS 公式

参考


🎓 試験での出題傾向

試験重要度主な出題パターン
CLF出題稀
SAAサーバーレス設計の文脈で「共通ライブラリの管理 → レイヤー」
DVALambda 開発のベストプラクティス、バージョン管理
SOAレイヤーの運用管理