View a markdown version of this page

Lambda でのレイヤーの作成と削除 - AWS Lambda

Lambda でのレイヤーの作成と削除

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

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

あなたがレイヤーコンテンツをパッケージ化したら、次のステップは Lambda でのレイヤーの作成です。このセクションでは、Lambda コンソールまたは Lambda API のみを使用して、レイヤーを作成および削除する方法を示します。AWS CloudFormation を使用してレイヤーを作成するには、AWS CloudFormation を使用したレイヤー を参照してください。AWS Serverless Application Model (AWS SAM) を使用してレイヤーを作成するには、AWS SAM を使用したレイヤー を参照してください。

レイヤー作成

レイヤーを作成するには、ローカルマシンから、または Amazon Simple Storage Service (Amazon S3) から .zip ファイルのアーカイブをアップロードします。Amazon S3 からアップロードするとき、Lambda がコードを Lambda マネージドストレージにコピーするか、S3 バケットから直接参照するかを選択できます。詳細については、「セルフマネージド S3 コードストレージ」を参照してください。

Lambda は、関数の実行環境を設定する際に、レイヤーの内容を /opt ディレクトリに抽出します。

レイヤーには、1 つまたは複数のレイヤーバージョンを含めることができます。レイヤーを作成すると、Lambda はレイヤーのバージョンをバージョン 1 に設定します。既存のレイヤーバージョンの権限はいつでも変更することができます。ただし、コードを更新したり、その他の構成を変更したりするには、新しいバージョンのレイヤーを作成する必要があります。

レイヤーを作成するには (コンソール)
  1. Lambda コンソールの [Layers (レイヤー)] ページを開きます。

  2. [Create layer] (レイヤーの作成) を選択します。

  3. [ レイヤー設定 ] の [ 名前 ] に、レイヤーの名前を入力します。

  4. (オプション) [Description] (説明) で、レイヤーの説明を入力します。

  5. レイヤーコードをアップロードするには、次のいずれかを実行します。

    • コンピューターから .zip ファイルをアップロードするには、[ .zip ファイルをアップロード ] を選択します。[Upload] (アップロード) を選択して、ローカルの .zip ファイルを選択します。

    • Amazon S3 からファイルをアップロードするには、[Upload a file from Amazon S3] (Amazon S3 からファイルをアップロードする) を選択します。その後、[Amazon S3 link URL] (Amazon S3 のリンク URL) で、ファイルへのリンクを入力します。

  6. (オプション) [互換性のあるアーキテクチャ] では、1 つまたは両方の値を選択します。詳細については、「Lambda 関数の命令セットアーキテクチャの選択と設定」を参照してください。

  7. (オプション) [互換性のあるランタイム] では、お使いのレイヤーと互換性のあるランタイムを選択します。

  8. (オプション) [License] (ライセンス) で、必要なライセンス情報を入力します。

  9. [作成] を選択します。

または、publish-layer-version AWS Command Line Interface (CLI) コマンドを実行することもできます。Amazon S3 からアップロードする場合は、S3ObjectStorageMode=REFERENCE を含めてセルフマネージド S3 コードストレージを使用するか、これを省略して Lambda マネージドストレージを使用します (デフォルトで COPY に設定されます)。例:

aws lambda publish-layer-version --layer-name my-layer --zip-file fileb://layer.zip --compatible-runtimes python3.14

publish-layer-version を実行するたびに、Lambda は新しいレイヤーバージョンを作成します。

レイヤーバージョンの削除

レイヤーバージョンを削除するには、DeleteLayerVersion の API オペレーションを使用します。例えば、レイヤー名およびレイヤーバージョンが指定された状態で delete-layer-version AWS CLI コマンドを実行します。

aws lambda delete-layer-version --layer-name my-layer --version-number 1

レイヤーのバージョンを削除すると、新しい関数でそのバージョンを使用するように設定することはできなくなります。ただし、削除されたレイヤーバージョンを既に参照している関数は、そのレイヤーコンテンツで引き続き実行されます。Lambda はレイヤー名にバージョン番号を再利用することはありません。

レイヤーの削除によるストレージクォータへの影響

レイヤーバージョンを削除した場合のストレージクォータへの影響は、レイヤーで使用されるストレージモードとそれを参照する関数によって異なります。

レイヤーが Lambda マネージドストレージを使用する場合 (COPY)

Lambda マネージドストレージを使用するレイヤーバージョンを削除すると、レイヤーコードはアカウントの Lambda マネージドストレージクォータから削除されます。ただし、削除されたレイヤーバージョンをまだ参照している関数は、そのレイヤーコンテンツに引き続きアクセスします。レイヤーコンテンツは、関数のデプロイパッケージサイズのクォータ (解凍状態で 250 MB) に対してカウントされますが、アカウントレベルの Lambda マネージドストレージクォータに対してはカウントされなくなります。

レイヤーがセルフマネージド S3 ストレージを使用する場合 (REFERENCE)

セルフマネージド S3 コードストレージを使用するレイヤーは Lambda マネージドストレージを消費しないため、そのようなレイヤーを削除しても Lambda マネージドストレージのクォータには影響しません。削除されたセルフマネージドレイヤーバージョンを参照する関数は、引き続き正常に実行されます。ただし、ソースオブジェクトを S3 バケットから削除するか、Lambda のアクセスを取り消すと、そのレイヤーで関数設定を更新できなくなります。

注記

レイヤーバージョンを削除しても、それを参照する関数は非アクティブ化されません。レイヤーが Lambda マネージドストレージとセルフマネージド S3 ストレージのどちらを使用していたかに関係なく、関数は Active の状態のままになります。Inactive 状態は、Lambda がセルフマネージド S3 バケットに保存されている関数独自のソースコードにアクセスできなくなった場合にのみ適用されます。