在 Lambda 中创建和删除层 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Lambda 中创建和删除层

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

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

打包层内容完成后,下一步是在 Lambda 中创建层。本部分演示如何仅使用 Lambda 控制台或 Lambda API 创建和删除层。要使用 Amazon CloudFormation 创建层,请参阅 与层结合使用 Amazon CloudFormation。要使用 Amazon Serverless Application Model(Amazon SAM)创建层,请参阅 与层结合使用 Amazon 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 指令集架构(ARM/x86)

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

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

  9. 选择 Create(创建)。

或者,您也可以使用 PublishLayerVersionAPI 创建图层。例如,您可以使用 publish-layer-version Amazon 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 时,都会创建该层的新版本。

删除层版本

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

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

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