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

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

Lambda レイヤーの共有

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

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

仕組み

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

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

  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