関数へのレイヤーの追加 - AWS Lambda

関数へのレイヤーの追加

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

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

レイヤーを使用するよう Lambda 関数を設定する前に、以下を実行する必要があります。

Lambda 関数には最大 5 つのレイヤーを追加できます。関数とすべてのレイヤーの解凍後の合計サイズは、解凍後のデプロイパッケージのサイズクォータである 250 MB を超えることはできません。詳細については、「Lambda クォータ」を参照してください。

関数は、すでに追加したレイヤーバージョンであれば、そのレイヤーバージョンが削除された後でも、またはレイヤーへのアクセス権限が取り消された後でも、そのレイヤーバージョンを引き続き使用できます。しかし、削除されたレイヤーバージョンを使用して新しい関数を作成することはできません。

注記

関数に追加するレイヤーが、関数のランタイムおよび命令セットアーキテクチャと互換性があることを確認します。

関数へレイヤーを追加するには (コンソール)
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 設定する関数を選択します。

  3. [Layers] (レイヤー) で [Add a layer] (レイヤーの追加) をクリックします。

  4. [レイヤーを選択する] で、レイヤーソースを選択します。

    1. [AWS レイヤー] または [カスタムレイヤー] のレイヤーソースの場合、プルダウンメニューからレイヤーを選択します。[Version (バージョン)]のプルダウンメニューからレイヤーバージョンを選択します。

    2. [ARN を指定する] レイヤーソースの場合、テキストボックスに ARN を入力して [確認] を選択します。次に、[Add] (追加) を選択します。

レイヤーを追加する順序は、Lambda がレイヤーのコンテンツを実行環境にマージする順序です。レイヤーのマージ順序はコンソールを使用して変更できます。

関数のレイヤーのマージ順序を更新するには (コンソール)
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 設定する関数を選択します。

  3. [Layers] (レイヤー) で [Edit] (編集) をクリックします。

  4. レイヤーの 1 つを選択します。

  5. [Merge earlier (前にマージする)] または [Merge later (後にマージする)] を選択して、レイヤーの順序を調整します。

  6. [Save] を選択します。

レイヤーはバージョン管理されています。各レイヤーバージョンのコンテンツは変更できません。レイヤーの所有者は更新されたコンテンツを提供するため、新しいレイヤーバージョンをリリースすることができます。関数に添付されているレイヤーバージョンを更新するには、コンソールを使用します。

関数のレイヤーバージョンを更新するには (コンソール)
  1. Lambda コンソールの [Layers (レイヤー)] ページを開きます。

  2. バージョンを更新したいレイヤーを選択します。

  3. [Functions using this version] (このバージョンを使用する関数) タブを選択します。

  4. 変更したい関数を選択してから、[Edit] (編集) を選択します。

  5. [Layer version] (レイヤーバージョン) では、変更するレイヤーのバージョンを選択します。

  6. [Update functions] (関数を更新) をクリックします。

AWS アカウント間で、関数のレイヤーバージョン更新することはできません。

関数からレイヤーコンテンツにアクセスする

Lambda 関数にレイヤーを含めると、Lambda は関数実行環境で/optディレクトリにレイヤーコンテンツを抽出します。Lambda は、関数によって一覧表示された順序 (低から高) でレイヤーを抽出します。Lambda は同じ名前のフォルダをマージします。複数のレイヤーに同じファイルが表示された場合は、関数は最後に抽出されたレイヤーのバージョンを使用します。

各 Lambda ランタイムは、PATH 変数に特定の /opt ディレクトリフォルダを追加します。関数コードはパスを指定しなくても、レイヤーコンテンツにアクセスできます。Lambda 実行環境のパス設定の詳細については、「定義されたランタイム環境変数」を参照してください。

レイヤー作成時にライブラリをどこに含めるかに関しては、各 Lambda ランタイムのレイヤーパス を参照してください。

Node.js または Python ランタイムを使用している場合は、Lambda コンソールの組み込みコードエディターを使用することができます。レイヤーとして追加した任意のライブラリを、現在の関数にインポートできるはずです。

レイヤー情報の確認

関数のランタイムと互換性のあるレイヤーをアカウントで検索するには、ListLayers API を使用します。たとえば、次の list-layers AWS Command Line Interface (CLI) コマンドを使用することができます。

aws lambda list-layers --compatible-runtime python3.9

次のような出力が表示されます:

{ "Layers": [ { "LayerName": "my-layer", "LayerArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer", "LatestMatchingVersion": { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "python3.9", "python3.10", "python3.11", ] } } ] }

アカウント内のすべてのレイヤーをリスト化するには、--compatible-runtime オプションを省略します。レスポンスの詳細には、各レイヤーの最新バージョンが表示されます。

ListLayerVersions API を使用して、最新バージョンのレイヤーを取得することもできます。たとえば、次の list-layer-versions CLI コマンドを使用することができます。

aws lambda list-layer-versions --layer-name my-layer

次のような出力が表示されます:

{ "LayerVersions": [ { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "java11" ] }, { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:1", "Version": 1, "Description": "My layer", "CreatedDate": "2023-11-15T00:27:46.592+0000", "CompatibleRuntimes": [ "java11" ] } ] }