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

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

处理层

的 AWS SAM CLI支持包含层的应用程序。有关层的更多信息,请参阅 AWS Lambda 层.

以下是一个示例 AWS SAM 模板,带 Lambda 包含图层的函数:

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - <LayerVersion ARN>

有关在应用程序中添加层的更多信息,请参阅 AWS::Serverless::Function.

当您使用其中一个sam本地CLI子命令调用您的功能时,您的功能的层包将下载并缓存到本地主机上。默认缓存目录位置见下图。包缓存后, AWS SAM CLI将层覆盖到用于调用函数的Docker镜像上。的 AWS SAM CLI生成其构建的图像的名称,以及 LayerVersions 保存在缓存中的。您可以在以下几节中找到更多关于框架的详细信息。

要检查重叠层,请执行以下命令,在要检查的图像中启动bash会话:

docker run -it --entrypoint=/bin/bash samcli/lambda:<Tag following the schema outlined in Docker Image Tag Schema> -i

层缓存目录名称框架

给定 LayerVersionArn 在模板中定义, AWS SAM CLI提取 LayerName 和版本。它创建一个目录,将图层内容放入命名 LayerName-Version-<first 10 characters of sha256 of ARN>.

示例:

ARN = arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 Directory name = myLayer-1-926eeb5ff1

Docker图像标签模式

要计算唯一层散列,请将所有唯一层名称与分隔符“-”组合,取SHA256散列,然后取前10个字符。

示例:

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 - arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1

唯一名称的计算方式与层缓存目录名称框架相同:

arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 = myLayer-1-926eeb5ff1 arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1 = mySecondLayer-1-6bc1022bdf

要计算唯一层散列,请将所有唯一层名称与分隔符“-”组合,取sha256散列,然后取前25个字符:

myLayer-1-926eeb5ff1-mySecondLayer-1-6bc1022bdf = 2dd7ac5ffb30d515926aef

然后将此值与函数的运行时组合,分隔符为“-”:

python3.7-2dd7ac5ffb30d515926aefffd

默认缓存目录位置

OS Location
Windows 7 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 8 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 10 C:\Users\<user>\AppData\Roaming\AWS SAM
macOS ~/.aws-sam/layers-pkg
Unix(Unix) ~/.aws-sam/layers-pkg