共享 Lambda 层 - Amazon Serverless Application Repository
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

共享 Lambda 层

如果您已在 Lambda 层中实现功能,则可能希望共享层而不托管层的全局实例。通过以这种方式共享层,其他用户可以将层的实例部署到自己的账户。这样可以防止客户端应用程序依赖于层的全局实例。这些区域有:Amazon Serverless Application Repository使您能够以这种方式轻松地共享 Lambda 层。

有关 Lambda 层的更多信息,请参阅Amazon Lambda层中的Amazon Lambda开发人员指南.

工作方式

以下是使用 Amazon Serverless Application Repository 共享层的步骤。这允许在用户的中创建层的副本。Amazonaccount.

  1. 使用定义无服务器应用程序Amazon SAM包含层作为资源的模板 — 也即或AWS::Serverless::LayerVersion或者AWS::Lambda::LayerVersion资源。

  2. 将您的应用程序发布到 Amazon Serverless Application Repository 并共享(公开或私下)。

  3. 客户部署您的应用程序,这会自行创建层的副本Amazonaccount. 客户现在可以在其中引用层的 Amazon 资源名称 (ARN)Amazon在客户端应用程序中。

示例

以下是示例:Amazon SAM包含要共享的 Lambda 层的应用程序的模板:

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

当客户从部署您的应用程序时Amazon Serverless Application Repository,将在其中创建一个图层Amazonaccount. 层的 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