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 ファイルのアーカイブをアップロードします。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. [作成] を選択します。

または、 PublishLayerVersion API を使用してレイヤーを作成することもできます。たとえば、名前、説明、および .zip ファイルアーカイブを指定して、publish-layer-version AWS Command Line Interface (CLI) コマンドを使用できます。ライセンス情報、互換性のあるランタイム、および互換性のあるアーキテクチャパラメータはオプションです。

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"

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

{ "Content": { "Location": "https://awslambda-us-east-2-layers.s3.us-east-2.amazonaws.com/snapshots/123456789012/my-layer-4aaa2fbb-ff77-4b0a-ad92-5b78a716a96a?versionId=27iWyA73cCAYqyH...", "CodeSha256": "tv9jJO+rPbXUUXuRKi7CwHzKtLDkDRJLB3cC3Z/ouXo=", "CodeSize": 169 }, "LayerArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer", "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:1", "Description": "My layer", "CreatedDate": "2023-11-14T23:03:52.894+0000", "Version": 1, "CompatibleArchitectures": [ "arm64", "x86_64" ], "LicenseInfo": "MIT", "CompatibleRuntimes": [ "python3.10", "python3.11" ] }

publish-layer-version を呼び出すたびに、新しいバージョンのレイヤーを作成します。

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

レイヤーバージョンを削除するには、 DeleteLayerVersion API を使用します。たとえば、レイヤー名とレイヤーバージョンを指定して delete-layer-version CLI コマンドを使用することができます。

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

レイヤーバージョンを削除すると、そのバージョンを使用する Lambda 関数を設定できなくなります。ただし、該当バージョンをすでに使用している関数は引き続きそのバージョンにアクセスできます。また、Lambda はレイヤー名にバージョン番号を再利用することはありません。