向函数添加层
Lambda 层是包含补充代码或数据的 .zip 文件存档。层通常包含库依赖项、自定义运行时系统或配置文件。
本部分介绍如何向 Lambda 函数添加层。有关层的更多概念性信息以及您可能会考虑使用层的原因,请参阅 使用层管理 Lambda 依赖项。
在将 Lambda 函数配置为使用层之前,您必须:
-
确保您拥有对层版本调用 GetLayerVersion API 的权限。对于 AWS 账户 中的函数,您必须在用户策略中拥有此权限。要在另一个账户中使用层,该账户的拥有者必须在基于资源的策略中授予您的账户权限。有关示例,请参阅 向其他账户授予 Lambda 层访问权限。
您最多可以在 Lambda 函数中添加五个层。函数和所有层的总解压缩大小不能超出 250 MB 的解压缩部署程序包大小配额。有关更多信息,请参阅 Lambda 配额。
即使在删除该层版本或撤消该层的访问权限后,函数也可以继续使用已添加的任何层版本。但是,您无法创建使用已删除层版本的新函数。
注意
确保添加到函数的层与函数的运行时系统和指令集架构兼容。
向函数添加层(控制台)
打开 Lamba 控制台的函数页面
。 -
选择要配置的函数。
-
在层下,选择添加层。
-
在选择层下,选择一个层源:
-
对于 AWS 层或自定义层层源,请从下拉菜单中选择一个层。在版本下,从下拉菜单中选择层版本。
-
对于指定 ARN 层源,请在文本框中输入 ARN 并选择验证。然后,选择添加。
-
添加层的顺序就是 Lambda 将层内容合并到执行环境中的顺序。您可以使用控制台更改层合并顺序。
更新函数的层合并顺序(控制台)
打开 Lamba 控制台的函数页面
。 -
选择要配置的函数。
-
在层下,选择编辑。
-
选择其中一个图层。
-
选择提前合并或者稍后合并以调整层的顺序。
-
选择保存。
层受版本控制。每个层版本的内容都是不可变的。层所有者可以发布新的层版本以提供更新内容。您可以使用控制台更新附加到函数的层版本。
更新函数的层版本(控制台)
-
打开 Lambda 控制台的 Layers page
(层页面)。 -
选择要为其更新版本的层。
-
选择使用此版本的函数选项卡。
-
选择要修改的函数,然后选择编辑。
-
从层版本中,选择要更改的目标层版本。
-
选择 Update functions(更新函数)。
不能跨 AWS 账户更新函数的层版本。
通过函数访问层内容
如果 Lambda 函数包含层,Lambda 会将层的内容提取到函数执行环境中的 /opt
目录。Lambda 按函数列出的顺序(从低到高)提取层。Lambda 会合并同名文件夹。如果同一文件出现在多个层中,则该函数将使用上次提取的层中的版本。
每个 Lambda 运行时系统都会将特定的 /opt
目录文件夹添加到 PATH
变量。函数代码无需指定路径即可访问层内容。有关 Lambda 执行环境中路径设置的更多信息,请参阅 定义运行时环境变量:
请参阅 每个 Lambda 运行时的层路径 以了解创建层时在何处纳入库。
如果您使用的是 Node.js 或 Python 运行时系统,则可使用 Lambda 控制台中的内置代码编辑器。您能够导入作为层添加到当前函数的任何库。
查找层信息
要查找账户中与函数运行时系统兼容的层,请使用 ListLayers API。例如,您可以使用以下 list-layers
AWS Command Line Interface(CLI)命令:
aws lambda list-layers --compatible-runtime python3.9
您应该可以看到类似于如下所示的输出内容:
{ "Layers": [ { "LayerName": "my-layer", "LayerArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer", "LatestMatchingVersion": { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "python3.9", "python3.10", "python3.11", ] } } ] }
要列出账户中的所有层,您可以省略 --compatible-runtime
选项。响应详细信息显示了每层的最新版本。
您还可以使用 ListLayerVersions API 获取层的最新版本。例如,您可以使用以下 list-layer-versions
CLI 命令:
aws lambda list-layer-versions --layer-name my-layer
您应该可以看到类似于如下所示的输出内容:
{ "LayerVersions": [ { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "java11" ] }, { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:1", "Version": 1, "Description": "My layer", "CreatedDate": "2023-11-15T00:27:46.592+0000", "CompatibleRuntimes": [ "java11" ] } ] }