【AWS入門】Lambdaのレイヤー(Layer)とは?使い方・作成・活用例を初心者向けに徹底解説
生徒
「先生、AWS Lambdaで使うレイヤーってなんですか?なんだか難しそうで…」
先生
「いい質問ですね。Lambdaレイヤーは、共通のライブラリやコードを再利用できる便利な仕組みです。」
生徒
「共通のライブラリって、たとえばどういうものですか?」
先生
「例えば、Pythonで書いたLambda関数に外部ライブラリを使いたいとき、そのライブラリをレイヤーにしておけば、他の関数でも共通して使えるようになります。」
生徒
「なるほど!それじゃあ、Lambdaレイヤーの使い方を詳しく教えてください!」
1. AWS Lambdaレイヤーとは?
AWS Lambdaレイヤー(Layer)とは、関数の実行環境に外部ライブラリや共通コードを追加するための仕組みです。複数のLambda関数で同じライブラリや共通モジュールを使うとき、毎回関数内に埋め込むのではなく、レイヤーとして切り出しておくことで再利用性が高まり、保守性も向上します。
例えば、Pythonでrequestsライブラリを使う場合や、JavaScriptで共通のヘルパーモジュールを使う場合に便利です。
2. Lambdaレイヤーの主な用途
Lambdaレイヤーの代表的な用途には以下があります:
- PythonやNode.jsの外部ライブラリの共有
- JavaのJARファイルや依存関係の共有
- 共通の設定ファイルやユーティリティ関数の利用
- サードパーティ製のSDKやツールの適用
チーム開発において、共通の開発環境やコードベースを複数のLambda関数で効率的に活用できるのが特徴です。
3. Lambdaレイヤーの作り方
LambdaレイヤーはZIP形式で作成します。以下はPythonの外部ライブラリをレイヤー化する例です。
mkdir -p python
pip install requests -t python/
zip -r layer.zip python
AWSコンソールで「レイヤーの作成」を選び、ZIPファイルをアップロードします。ランタイムには、Python3.9やNode.jsなど関数で使う言語を選びましょう。
4. Lambda関数にレイヤーを追加する方法
レイヤーを作成したら、次にLambda関数に追加します。
- AWS Lambdaの関数設定画面を開く
- 「レイヤーを追加」をクリック
- 作成済みのレイヤーとバージョンを選択
- 保存
これで関数からレイヤーのライブラリやコードを読み込めるようになります。
5. Lambdaレイヤーを活用するメリット
Lambdaレイヤーを使うことで得られるメリットは多くあります:
- 関数コードを軽量化できる
- 共通ライブラリのアップデートが一括で可能
- コードの重複を防ぎ、バージョン管理がしやすくなる
- Lambdaの最大パッケージサイズ制限(250MB)を回避しやすくなる
6. Lambdaレイヤーの使用上の注意点
便利なLambdaレイヤーですが、いくつか注意点もあります:
- 最大5個までしか関数に追加できない
- レイヤーのアップデートにはバージョンを新たに作成する必要がある
- ランタイムバージョンの整合性に注意
レイヤーと関数のランタイムが一致しないと、動作しない可能性があるため、常に対象ランタイムの確認をしましょう。
7. Lambdaレイヤーの活用例:Node.jsと共通モジュール
以下は、Node.jsで共通のログ出力処理をレイヤーにした例です。
// logger.js
exports.log = (message) => {
console.log(`[LOG] ${message}`);
};
このlogger.jsをZIPでレイヤーにし、Lambda関数側で以下のように使います。
const logger = require('/opt/logger');
exports.handler = async (event) => {
logger.log("Lambda関数が呼び出されました");
};
/opt/はレイヤーがマウントされるパスです。Node.jsやPythonでも共通で使えます。
8. Lambdaレイヤーを活用するためのベストプラクティス
- レイヤー名とバージョン管理を明確にする
- レイヤー単位での権限(IAM)管理を徹底する
- 本番・開発環境で異なるレイヤーを使用し分離する
これらを意識することで、AWS Lambdaの開発や運用がスムーズになり、チーム全体の生産性も向上します。