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

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

使用 Lambda 层

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

您可能会基于很多原因考虑使用层:

  • 减小部署包的大小。与其将所有函数依赖项和函数代码都包含在部署包中,不如将其放在一个层中。这样可以减小部署包的大小并对其进行组织。

  • 分离核心函数逻辑与依赖项。借助层,您无需使用函数代码即可更新函数依赖项,反之亦然。这有助于将二者分离,并帮助您专注于函数逻辑。

  • 在多个函数之间共享依赖项。创建层后,您可以将其应用到账户中任意数量的函数。如果没有层,则需要在每个单独的部署包中包含相同的依赖项。

  • 使用 Lambda 控制台代码编辑器。代码编辑器是快速测试次要功能代码更新的得力工具。但是,如果部署包过大,则无法使用编辑器。使用层可以减小部署包的大小,并解锁代码编辑器的用法。

下图说明了共享依赖项的两个函数之间的高级架构差异。一个使用 Lambda 层,另一个不使用。


      不使用层的两个 Lambda 函数与共享一个层的两个函数之间的架构差异。

当您向函数添加层时,Lambda 会将层内容提取到函数执行环境中的 /opt 目录中。所有原生支持的 Lambda 运行时系统都包含 /opt 目录中特定目录的路径。因而函数可以访问层内容。有关这些特定路径以及如何正确打包层的更多信息,请参阅 打包层内容

每个函数最多可以包含五个层。此外,您只能在将 Lambda 函数部署为 .zip 文件存档的情况下使用层。对于定义为容器映像的函数,您可以在创建容器映像时打包首选运行时系统和所有代码依赖项。有关更多信息,请参阅Amazon计算博客上的在容器镜像中使用 Lambda 层和扩展

如何使用层

要创建层,请将依赖项打包到.zip 文件中,类似于创建常规部署包的方式。更具体地说,创建和使用层的一般过程包括以下三个步骤:

层和层版本

层版本是层的特定版本的不可变快照。当您创建新层时,Lambda 会创建一个版本号为 1 的新的层版本。每次向层发布更新时,Lambda 都会递增版本号并创建新的层版本。

每个层版本均由一个 Amazon 资源名称(ARN)进行唯一标识。向函数添加层时,必须指定要使用的确切的层版本。

示例应用程序

本指南的 GitHub 存储库提供了空白的示例应用程序,这些应用程序演示了如何使用图层进行依赖关系管理。