Lambda レイヤーの共有 - AWS Serverless Application Repository

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

Lambda レイヤーの共有

Lambda レイヤーに機能を実装している場合は、レイヤーのグローバルインスタンスをホストしなくても、レイヤーを共有できます。この方法でレイヤーを共有すると、他のユーザーは各自のアカウントにレイヤーのインスタンスをデプロイできます。クライアントアプリケーションは、レイヤーのグローバルインスタンスに依存する必要がなくなります。AWS Serverless Application Repository を使用すると、この方法で簡単に Lambda レイヤーを共有できます。

Lambda レイヤーの詳細については、AWS Lambda デベロッパーガイドAWS Lambda レイヤーを参照してください。

仕組み

AWS Serverless Application Repository を使用してレイヤーを共有する手順は次のとおりです。この手順により、レイヤーのコピーをユーザーの AWS アカウントに作成できます。

  1. レイヤーをリソース (つまり、AWS::Serverless::LayerVersion リソースまたは AWS::Lambda::LayerVersion リソースのいずれか) として含む AWS SAM テンプレートを使用してサーバーレスアプリケーションを定義します。

  2. アプリケーションを AWS Serverless Application Repository に発行し、公開または非公開として共有します。

  3. ユーザーは、アプリケーションをデプロイし、各自の AWS アカウントにレイヤーのコピーを作成します。これで、ユーザーは各自のクライアントアプリケーションを使用して、各自の AWS アカウント内のレイヤーの Amazon リソースネーム (ARN) を参照できます。

共有する Lambda レイヤーが含まれているアプリケーション用の AWS SAM テンプレートの例を次に示します。

Resources: SharedLayer: Type: AWS::Serverless::LayerVersion Properties: LayerName: shared-layer ContentUri: source/layer-code/ CompatibleRuntimes: - python3.7 Outputs: LayerArn: Value: !Ref SharedLayer

ユーザーが AWS Serverless Application Repository からアプリケーションをデプロイすると、ユーザーの AWS アカウントにレイヤーが作成されます。レイヤーの ARN は次のようになります。

arn:aws:lambda:us-east-1:012345678901:layer:shared-layer:1

これで、ユーザーは、次の例に示すように、この ARN を各自のクライアントアプリケーションで参照できます。

Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.7 CodeUrl: source/app-code/ Layers: - arn:aws:lambda:us-east-1:012345678901:layer:shared-layer:1