本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
共享 Lambda 层
如果您已在 Lambda 层中实现功能,则可能希望共享层而不托管层的全局实例。通过以这种方式共享层,其他用户可以将层的实例部署到自己的账户。这样可以防止客户端应用程序依赖于层的全局实例。这些区域有:AWS Serverless Application Repository使您能够以这种方式轻松地共享 Lambda 层。
有关 Lambda 层的更多信息,请参阅AWS Lambda层中的AWS Lambda开发人员指南.
工作方式
以下是使用 AWS Serverless Application Repository 共享层的步骤。这允许在用户的中创建层的副本。AWSaccount.
-
使用定义无服务器应用程序AWS SAM将层作为资源包含的模板 — 也即或
AWS::Serverless::LayerVersion
或者AWS::Lambda::LayerVersion
资源。 -
将您的应用程序发布到 AWS Serverless Application Repository 并共享(公开或私下)。
-
客户部署您的应用程序,这会自行创建层的副本。AWSaccount. 客户现在可以在其中引用层的 Amazon 资源名称 (ARN)。AWS账户在客户端应用程序中。
示例
以下是示例:AWS SAM包含要共享的 Lambda 层的应用程序的模板:
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,将在其中创建一个图层AWSaccount. 层的 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