はじめに
AWS Lambda Layers(レイヤー)を使用すると複数のLambda関数で共通のコードやライブラリを共有できます。これによりコードの再利用性を向上させ、Lambda関数間で共通の機能やライブラリを簡単に管理できます。
今回の記事ではこのAWSLambdaLayerの作成、設定方法、レイヤーを使うメリットについて記載しています。
レイヤーの作成/設定手順(ローカル環境で作成する場合)
1. Lambda Layer用のプログラムの作成:
①Pythonコードの作成
②依存関係を取得:
・コードが依存している外部パッケージがあれば、これらを取得します。通常、pipを使用して仮想環境で必要なパッケージをインストールします。
・pythonがWindows環境にインストールされていてパスが通っていれば以下のコマンドをコンソール画面で入力すればインストールが可能です
pip install -r requirements.txt -t [インストール先パス]
(実行例)
pip install -r requirements.txt -t ./layerCode
③Pythonコードのzip化
・Windows環境であれば右クリックからの圧縮を選択してZip化が可能です。
2. AWSコンソールからレイヤーの作成(アップロード):
①Lambdaコンソール画面から「レイヤーの追加」を選択
②レイヤーの各種情報の入力
・アップロード方法はZipファイルの直接アップロードとAmazonS3にファイルをアップロードした後でそのURLを指定する方法があります
※10MB以上のファイルの場合はS3からファイルをアップロードする選択肢になります
・ランタイムはレイヤーを読み込むLambda関数と互換性のあるランタイムを選択してください
3. Lambda関数へのレイヤーの読み込み
①Lambda関数の設定画面からレイヤーの追加を選択
②2の手順で追加したレイヤー(カスタムレイヤー)を選択して追加します
4. Lambda関数のコードでレイヤーに含まれる処理の呼び出し
・importでレイヤーを指定します
★注意★
このimportでは「1の手順で作成したpythonファイルの名前」を指定して下さい。レイヤーの名前ではありません
・コード中の必要な場所でレイヤー中の処理を呼び出してください
5. 結果確認
・レイヤーのプログラムで実装した文字出力がされていることを確認しました
Lambdaレイヤーを使うメリット
1.コードの再利用性
レイヤーを使用することで、関数間でコードを共有しやすくなります。特に複数のLambda関数で同じライブラリや共通の機能を使用する場合、それらのコードをレイヤーにまとめておくことで、冗長性を減少させ、コードの再利用性を向上させることができます。
2.依存関係の管理
レイヤーは、Lambda関数が依存する外部ライブラリやモジュールを管理するための便利な方法です。関数ごとに同じ依存関係を手動で管理する必要がなくなり、レイヤーを更新するだけで関連するすべての関数が更新されます。
3.デプロイの簡素化
レイヤーを使用することで、Lambda関数のデプロイプロセスが簡素化されます。関数自体のコードが独立しているため、変更があった場合でも、関数ごとに再デプロイする必要がなく、レイヤーだけを更新することが可能です。
4.サイズの削減
・Lambda関数のパッケージングサイズを減らすことができます。共通のコードやライブラリがレイヤーに含まれているため、個々の関数のパッケージングサイズは小さくなり、デプロイや起動の速度が向上します。
5.セキュリティと一貫性
・レイヤーを使用することで、セキュリティの向上とコードの一貫性を確保できます。共通のセキュリティ対策や認証メカニズムをレイヤーに統合することで、関数ごとに同じセキュリティポリシーを確実に適用できます。