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