はじめに
Lambdaレイヤーについて、整理してみました。
Lambdaレイヤーとは、Lambda関数で使用するライブラリ、カスタムランタイム、設定ファイル、その他の依存関係をパッケージ化して共有するための機能です。レイヤーを使用することで、コードの再利用、デプロイの簡素化、バージョン管理が容易になります。レイヤーの作成と使用は、依存関係をディレクトリに配置し、ZIPファイルに圧縮してアップロードすることで簡単に行えます。また、不要になったレイヤーバージョンは削除することができます。これにより、複数のLambda関数で共通のコードやライブラリを効率的に管理できます。
Lambdaレイヤーの利点
1.コードを再利用することができる
共通のライブラリや依存関係をレイヤーとしてパッケージ化することで、複数のLambda関数で再利用できます。
2.デプロイをシンプルにすることができる
レイヤーを使用することで、関数コードと依存関係を分離できます。
3.バージョンを管理して、依存関係の変更が他の関数に影響を与えないようにすることができる
レイヤーはバージョン管理が可能であり、特定のバージョンのレイヤーをLambda関数にアタッチできます。
Lambdaレイヤーの作成
-
依存関係の準備
依存関係(ライブラリやカスタムランタイムなど)をディレクトリに配置します。例えば、Pythonのライブラリを使用する場合、python
ディレクトリを作成し、その中にライブラリを配置します。mkdir -p layer/python pip install requests -t layer/python
-
ZIPファイルの作成
依存関係を含むディレクトリをZIPファイルに圧縮します。cd layer zip -r layer.zip .
-
レイヤーのアップロード
AWS Management Console、AWS CLI、またはAWS SDKを使用して、レイヤーをAWS Lambdaにアップロードします。aws lambda publish-layer-version --layer-name my-layer \ --description "My layer" \ --license-info "MIT" \ --zip-file fileb://layer.zip \ --compatible-runtimes python3.10 python3.11 \ --compatible-architectures "arm64" "x86_64"
参考
レイヤーの使用
-
レイヤーのアタッチ
Lambda関数にレイヤーをアタッチします。AWS Management Console、AWS CLI、またはAWS SDKを使用して、関数にレイヤーを追加します。aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:region:account-id:layer:my-layer:1
-
関数コードの更新
関数コード内でレイヤーの依存関係を使用します。例えば、Pythonのrequests
ライブラリを使用する場合、以下のようにインポートします。import requests def lambda_handler(event, context): response = requests.get('https://example.com') return response.text
レイヤーバージョンの削除
レイヤーバージョンを削除するには、DeleteLayerVersion
APIを使用します。以下のコマンドを使用して、AWS CLIでレイヤーバージョンを削除します。
aws lambda delete-layer-version --layer-name my-layer --version-number 1
レイヤーバージョンを削除すると、そのバージョンを使用するLambda関数を設定できなくなります。ただし、該当バージョンをすでに使用している関数は引き続きそのバージョンにアクセスできます。また、Lambdaはレイヤー名にバージョン番号を再利用することはありません。