レイヤーの使用 - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

レイヤーの使用

AWS SAM を使用することで、サーバーレスアプリケーションにレイヤーを含めることができます。レイヤーの詳細については、AWS Lambda デベロッパーガイドの「AWS Lambda レイヤー」を参照してください。

このトピックでは、以下に関する情報を提供します。

  • アプリケーションへのレイヤーの包含

  • レイヤーがローカルにキャッシュされる方法

カスタムレイヤーの構築については、「レイヤーの構築」を参照してください。

アプリケーションへのレイヤーの包含

アプリケーションにレイヤーを含めるには、AWS::Serverless::Function リソースタイプの Layers プロパティを使用します。

以下は、レイヤーが含まれる Lambda 関数を使用した AWS SAM テンプレートの例です。

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - <LayerVersion ARN>

レイヤーがローカルにキャッシュされる方法

sam local コマンドの 1 つを使用して関数を呼び出すと、関数のレイヤーパッケージがダウンロードされ、ローカルホストにキャッシュされます。

以下の表は、異なるオペレーティングシステムのデフォルトのキャッシュディレクトリの場所を示しています。

OS ロケーション
Windows 7 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 8 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 10 C:\Users\<user>\AppData\Roaming\AWS SAM
macOS ~/.aws-sam/layers-pkg
Unix ~/.aws-sam/layers-pkg

パッケージがキャッシュされると、AWS SAM CLI が、関数の呼び出しに使用される Docker イメージにレイヤーをオーバーレイします。は、ビルドするイメージの名前と、キャッシュに保持 LayerVersions されている AWS SAMCLIを生成します。スキーマの詳細は、後続のセクションで説明されています。

オーバーレイされたレイヤーを調査するには、以下のコマンドを実行して、調査したいイメージで bash セッションを開始します。

docker run -it --entrypoint=/bin/bash samcli/lambda:<Tag following the schema outlined in Docker Image Tag Schema> -i

レイヤーキャッシュディレクトリ名のスキーマ

テンプレートで LayerVersionArn 定義されている を指定すると、 は ARN から LayerName および バージョンをAWS SAMCLI抽出します。レイヤーコンテンツを配置するための LayerName-Version-<first 10 characters of sha256 of ARN> という名前のディレクトリを作成します。

例:

ARN = arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 Directory name = myLayer-1-926eeb5ff1

Docker イメージのタグスキーマ

一意のレイヤーのハッシュを計算するには、「-」の区切り記号を使用してすべての一意のレイヤー名を結合し、SHA256 ハッシュを指定してから、最初の 10 文字を指定します。

例:

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 - arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1

一意の名前は、レイヤーキャッシュディレクトリ名のスキーマと同じ方法で計算されます。

arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 = myLayer-1-926eeb5ff1 arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1 = mySecondLayer-1-6bc1022bdf

一意のレイヤーのハッシュを計算するには、「-」の区切り記号を使用してすべての一意のレイヤー名を結合し、SHA256 ハッシュを指定してから、最初の 25 文字を指定します。

myLayer-1-926eeb5ff1-mySecondLayer-1-6bc1022bdf = 2dd7ac5ffb30d515926aef

次に、この値と関数のランタイムおよびアーキテクチャを区切り記号「-」で結合します。

python3.7-x86_64-2dd7ac5ffb30d515926aefffd