在 Lambda 中创建和删除层 - AWS Lambda

在 Lambda 中创建和删除层

Lambda 层是包含补充代码或数据的 .zip 文件存档。层通常包含库依赖项、自定义运行时系统或配置文件。

本部分介绍如何在 Lambda 中创建和删除层。有关层的更多概念性信息以及您可能会考虑使用层的原因,请参阅 使用层管理 Lambda 依赖项

打包层内容完成后,下一步是在 Lambda 中创建层。本部分演示如何仅使用 Lambda 控制台或 Lambda API 创建和删除层。要使用 AWS CloudFormation 创建层,请参阅 与层结合使用 AWS CloudFormation。要使用 AWS Serverless Application Model(AWS SAM)创建层,请参阅 与层结合使用 AWS SAM

创建层

您可以从本地计算机或 Amazon Simple Storage Service(Amazon S3)上传 .zip 文件存档。设置函数的执行环境时,Lambda 将图层内容提取到 /opt 目录。

层可以有一个或多个层版本。创建层时,Lambda 将层版本设置为版本 1。您可以随时更改现有层版本的权限。但是,要更新代码或进行其他配置更改,必须创建该层的新版本。

创建层(控制台)
  1. 打开 Lambda 控制台的 Layers page(层页面)。

  2. 选择 Create layer(创建层)。

  3. Layer configuration(层配置)下,在 Name(名称)中,输入层的名称。

  4. (可选)对于 Description(描述),输入对层的描述。

  5. 要上载层代码,请执行以下操作之一:

    • 要从电脑上传 .zip 文件,请选择 Upload a .zip file(上传 .zip 文件)。然后,选择 Upload(上载)以选择本地 .zip 文件。

    • 要从 Simple Storage Service(Amazon S3)上传文件,请选择 Upload a file from Amazon S3 [从 Simple Storage Service(Amazon S3)上传文件]。然后,对于 Amazon S3 link URL(Simple Storage Service (Amazon S3) 链接 URL),输入文件的链接。

  6. (可选)对于兼容架构,选择一个值或两个值。有关更多信息,请参阅 为 Lambda 函数选择和配置指令集架构

  7. (可选)对于兼容的运行时系统,选择与层兼容的运行时系统。

  8. (可选)对于 License(许可证),输入任何必要的许可证信息。

  9. 选择 Create(创建)。

或者,您也可以使用 PublishLayerVersion API 创建层。例如,您可以使用 publish-layer-version AWS Command Line Interface(CLI)命令并指定名称、描述和 .zip 文件存档。许可证信息、兼容的运行时系统和兼容的架构参数都是可选的。

aws lambda publish-layer-version --layer-name my-layer \ --description "My layer" \ --license-info "MIT" \ --zip-file fileb://layer.zip \ --compatible-runtimes python3.10 python3.11 \ --compatible-architectures "arm64" "x86_64"

您应该可以看到类似于如下所示的输出内容:

{ "Content": { "Location": "https://awslambda-us-east-2-layers.s3.us-east-2.amazonaws.com/snapshots/123456789012/my-layer-4aaa2fbb-ff77-4b0a-ad92-5b78a716a96a?versionId=27iWyA73cCAYqyH...", "CodeSha256": "tv9jJO+rPbXUUXuRKi7CwHzKtLDkDRJLB3cC3Z/ouXo=", "CodeSize": 169 }, "LayerArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer", "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:1", "Description": "My layer", "CreatedDate": "2023-11-14T23:03:52.894+0000", "Version": 1, "CompatibleArchitectures": [ "arm64", "x86_64" ], "LicenseInfo": "MIT", "CompatibleRuntimes": [ "python3.10", "python3.11" ] }

每次调用 publish-layer-version 时,都会创建该层的新版本。

删除层版本

要删除层版本,请使用 DeleteLayerVersion API。例如,您可以使用 delete-layer-version CLI 命令并指定层名称和层版本。

aws lambda delete-layer-version --layer-name my-layer --version-number 1

删除一个层版本后,您无法再将 Lambda 函数配置为使用该层版本。但是,已使用此版本的任何函数仍能访问它。此外,Lambda 绝不会重用版本号作为层名称。

在计算配额时,删除层版本意味着它不再计入默认的 75 GB 函数和层存储配额中。但是,对于消耗已删除层版本的函数,层内容仍计入函数的部署包大小配额(即 .zip 文件存档为 250 MB)。