レイヤーコンテンツのパッケージング - AWS Lambda

レイヤーコンテンツのパッケージング

Lambda レイヤーは、補助的なコードやデータを含む .zip ファイルアーカイブです。レイヤーには通常、ライブラリの依存関係、カスタムランタイム、または設定ファイルが含まれています。

このセクションでは、レイヤーコンテンツを適切にパッケージングする方法について説明します。レイヤーの概念的な情報とその使用を検討する理由の詳細については、レイヤーによる Lambda 依存関係の管理 を参照してください。

レイヤーを作成する最初のステップは、すべてのレイヤーコンテンツを .zip ファイルアーカイブにバンドルすることです。Lambda 関数は Amazon Linux 上で実行されるため、レイヤーコンテンツは Linux 環境でコンパイルおよびビルドできる必要があります。

レイヤーコンテンツが Linux 環境で適切に動作することを確認するには、「Docker」または「AWS Cloud9」のようなツールを使用してレイヤーコンテンツを作成することをお勧めします。AWS Cloud9 は、コードを実行およびテストするために Linux サーバーへのビルトインアクセスを提供するクラウドベースの統合開発環境 (IDE) です。詳細については、AWS Compute Blog の「Lambda レイヤーを使用して開発プロセスを簡素化する」を参照してください。

各 Lambda ランタイムのレイヤーパス

関数にレイヤーを追加すると、Lambda はレイヤーのコンテンツをその実行環境の /opt ディレクトリに読み込みます。Lambda ランタイムごとに、PATH 変数には /opt ディレクトリ内の特定のフォルダパスがあらかじめ含まれます。PATH 変数がレイヤーコンテンツを取得できるようにするには、レイヤーの .zip ファイルの依存関係が次のフォルダーパスにある必要があります。

各 Lambda ランタイムのレイヤーパス
実行時間 パス

Node.js

nodejs/node_modules

nodejs/node14/node_modules (NODE_PATH)

nodejs/node16/node_modules (NODE_PATH)

nodejs/node18/node_modules (NODE_PATH)

Python

python

python/lib/python3.x/site-packages (サイトディレクトリ)

Java

java/lib (CLASSPATH)

Ruby

ruby/gems/3.2.0 (GEM_PATH)

ruby/lib (RUBYLIB)

すべてのランタイム

bin (PATH)

lib (LD_LIBRARY_PATH)

次の例は、レイヤーの .zip アーカイブでフォルダを設定する方法を示しています。

Node.js
例 Node.js 用の AWS X-Ray SDK のファイル構造
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk
Python
例 Requests ライブラリのファイル構造
layer_content.zip └ python └ lib └ python3.11 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...
Ruby
例 JSON gem のファイル構造
json.zip └ ruby/gems/2.7.0/ | build_info | cache | doc | extensions | gems | └ json-2.1.0 └ specifications └ json-2.1.0.gemspec
Java
例 Jackson JAR ファイルのファイル構造
layer_content.zip └ java └ lib └ jackson-core-2.17.0.jar └ <other potential dependencies> └ ...
All
例 JQ ライブラリのファイル構造
jq.zip └ bin/jq

レイヤーのパッケージ化、作成、追加に関する言語固有の手順については、次のページを参照してください。