レイヤーの操作 - AWS Serverless Application Model

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

レイヤーの操作

AWS SAM を使用すると、サーバーレスアプリケーションに Layer を含めることができます。レイヤーの詳細については、」AWS Lambda レイヤー()AWS Lambda 開発者ガイド

このトピックでは、次の情報を提供します。

  • アプリケーションへのレイヤーの組み込み

  • レイヤをローカルにキャッシュする方法

カスタム Layer の構築の詳細については、」レイヤーの作成

アプリケーションへのレイヤーの組み込み

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

以下に、Layer を含む Lambda 関数がある AWS SAM テンプレートの例を示します。

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

レイヤをローカルにキャッシュする方法

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

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

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 は Layer を関数の呼び出しに使用される Docker イメージにオーバーレイします。AWS SAM CLI は、ビルドするイメージの名前と、キャッシュに保持されている LayerVersions を生成します。スキーマの詳細については、次のセクションを参照してください。

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

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

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

テンプレートで定義されている LayerVersionArn を指定すると、AWS SAM CLI は ARN から LayerName とバージョンを抽出します。レイヤーの内容を名前付きの 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-2dd7ac5ffb30d515926aefffd