使用层管理 Lambda 依赖项
Lambda 层是包含补充代码或数据的 .zip 文件存档。层通常包含库依赖项、自定义运行时系统或配置文件。
您可能会基于很多原因考虑使用层:
-
减小部署包的大小。与其将所有函数依赖项和函数代码都包含在部署包中,不如将其放在一个层中。这样可以减小部署包的大小并对其进行组织。
-
分离核心函数逻辑与依赖项。借助层,您无需使用函数代码即可更新函数依赖项,反之亦然。这有助于将二者分离,并帮助您专注于函数逻辑。
-
在多个函数之间共享依赖项。创建层后,您可以将其应用到账户中任意数量的函数。如果没有层,则需要在每个单独的部署包中包含相同的依赖项。
-
使用 Lambda 控制台代码编辑器。代码编辑器是快速测试次要功能代码更新的得力工具。但是,如果部署包过大,则无法使用编辑器。使用层可以减小部署包的大小,并解锁代码编辑器的用法。
下图说明了共享依赖项的两个函数之间的高级架构差异。一个使用 Lambda 层,另一个不使用。
![不使用层的两个 Lambda 函数与共享一个层的两个函数之间的架构差异。](images/lambda-layers-diagram.png)
当您向函数添加层时,Lambda 会将层内容提取到函数执行环境中的 /opt
目录中。所有原生支持的 Lambda 运行时系统都包含 /opt
目录中特定目录的路径。因而函数可以访问层内容。有关这些特定路径以及如何正确打包层的更多信息,请参阅 打包层内容。
每个函数最多可以包含五个层。此外,您只能在将 Lambda 函数部署为 .zip 文件存档的情况下使用层。对于定义为容器映像的函数,您可以在创建容器映像时打包首选运行时系统和所有代码依赖项。有关更多信息,请参阅AWS计算博客上的在容器镜像中使用 Lambda 层和扩展
如何使用层
要创建层,请将依赖项打包到.zip 文件中,类似于创建常规部署包的方式。更具体地说,创建和使用层的一般过程包括以下三个步骤:
-
首先,打包层内容。这需要创建 .zip 文件存档。有关更多信息,请参阅 打包层内容。
-
接下来,在 Lambda 中创建层。有关更多信息,请参阅 在 Lambda 中创建和删除层。
-
向函数添加层。有关更多信息,请参阅 向函数添加层。
层和层版本
层版本是层的特定版本的不可变快照。当您创建新层时,Lambda 会创建一个版本号为 1 的新的层版本。每次向层发布更新时,Lambda 都会递增版本号并创建新的层版本。
每个层版本均由一个 Amazon 资源名称(ARN)进行唯一标识。向函数添加层时,必须指定要使用的确切的层版本。