翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Lambda レイヤーの共有
Lambda レイヤーに機能を実装している場合は、レイヤーのグローバルインスタンスをホストしなくても、レイヤーを共有できます。この方法でレイヤーを共有すると、他のユーザーは各自のアカウントにレイヤーのインスタンスをデプロイできます。クライアントアプリケーションは、レイヤーのグローバルインスタンスに依存する必要がなくなります。 AWS Serverless Application Repository を使用すると、この方法で Lambda レイヤーを簡単に共有できます。
Lambda レイヤーの詳細については、AWS Lambda デベロッパーガイドのAWS Lambda レイヤーを参照してください。
仕組み
AWS Serverless Application Repositoryを使用してレイヤーを共有する手順は次のとおりです。これにより、レイヤーのコピーをユーザーの AWS アカウントで作成できます。
-
レイヤーをリソースとして含む AWS SAM テンプレート、つまり
AWS::Serverless::LayerVersion
またはAWS::Lambda::LayerVersion
リソースを使用してサーバーレスアプリケーションを定義します。 -
アプリケーションを に公開し AWS Serverless Application Repository、(パブリックまたはプライベートに) 共有します。
-
お客様はアプリケーションをデプロイし、自分の 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