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

共享 Lambda 层

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

有关 Lambda 层的更多信息,请参阅 AWS Lambda Developer Guide 中的 AWS Lambda 层

工作原理

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

  1. 使用 AWS SAM 模板定义无服务器应用程序,该模板包含层作为资源 — 也即 AWS::Serverless::LayerVersionAWS::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 MySharedLayer

当客户从 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