レイヤーコンテンツのパッケージング
Lambda レイヤーは、補助的なコードやデータを含む .zip ファイルアーカイブです。レイヤーには通常、ライブラリの依存関係、カスタムランタイム、または設定ファイルが含まれています。
このセクションでは、レイヤーコンテンツを適切にパッケージングする方法について説明します。レイヤーの概念的な情報とその使用を検討する理由の詳細については、レイヤーによる Lambda 依存関係の管理 を参照してください。
レイヤーを作成する最初のステップは、すべてのレイヤーコンテンツを .zip ファイルアーカイブにバンドルすることです。Lambda 関数は Amazon Linux 上で実行されるため、レイヤーコンテンツは Linux 環境でコンパイルおよびビルドできる必要があります。
レイヤーコンテンツが Linux 環境で適切に動作することを確認するには、「Docker
各 Lambda ランタイムのレイヤーパス
関数にレイヤーを追加すると、Lambda はレイヤーのコンテンツをその実行環境の /opt
ディレクトリに読み込みます。Lambda ランタイムごとに、PATH
変数には /opt
ディレクトリ内の特定のフォルダパスがあらかじめ含まれます。Lambda がレイヤーコンテンツを取得できるようにするには、レイヤーの .zip ファイルの依存関係が次のフォルダパスにある必要があります。
ランタイム | パス |
---|---|
Node.js |
|
|
|
|
|
|
|
Python |
|
|
|
Java |
|
Ruby |
|
|
|
すべてのランタイム |
|
|
次の例は、レイヤーの .zip アーカイブでフォルダを設定する方法を示しています。
レイヤーのパッケージ化、作成、追加に関する言語固有の手順については、次のページを参照してください。
-
Node.js – Node.js Lambda 関数のレイヤーを操作する
-
Python – Python Lambda 関数にレイヤーを使用する
-
Ruby – Ruby Lambda 関数のレイヤーを操作する
-
Java – Java Lambda 関数のレイヤーを操作する
-
TypeScript – TypeScript Lambda 関数のレイヤーを操作する
Go および Rust で書かれた Lambda 関数の依存関係を管理するためにレイヤーを使用することはお勧めしません。これは、これらの言語で書かれた Lambda 関数が単一の実行可能ファイルにコンパイルされて、関数をデプロイしたときにそのファイルが Lambda に渡されるためです。この実行可能ファイルには、コンパイルされた関数コードがそのすべての依存関係と共に含まれています。レイヤーを使用すると、このプロセスが複雑になります。そのうえ、他に必要なアセンブリがあれば、初期化フェーズ中にいちいちメモリにロードしなければならないため、コールドスタート時間が長くなります。
Go および Rust Lambda 関数で外部依存関係を使用するには、その依存関係をデプロイパッケージに直接含めます。