

# 向函数添加层
<a name="adding-layers"></a>

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

本部分介绍如何向 Lambda 函数添加层。有关层的更多概念性信息以及您可能会考虑使用层的原因，请参阅 [使用层管理 Lambda 依赖项](chapter-layers.md)。

在将 Lambda 函数配置为使用层之前，您必须：
+ [打包层内容](packaging-layers.md)
+ [在 Lambda 中创建层](creating-deleting-layers.md)
+ 确保您拥有对层版本调用 [GetLayerVersion](https://docs.aws.amazon.com/lambda/latest/api/API_GetLayerVersion.html) API 的权限。对于 AWS 账户 中的函数，您必须在[用户策略](access-control-identity-based.md)中拥有此权限。要在另一个账户中使用层，该账户的拥有者必须在[基于资源的策略](access-control-resource-based.md)中授予您的账户权限。有关示例，请参阅 [向其他账户授予 Lambda 层访问权限](permissions-layer-cross-account.md)。

您最多可以在 Lambda 函数中添加五个层。函数和所有层的总解压缩大小不能超出 250 MB 的解压缩部署程序包大小配额。有关更多信息，请参阅 [Lambda 配额](gettingstarted-limits.md)。

即使在删除该层版本或撤消该层的访问权限后，函数也可以继续使用已添加的任何层版本。但是，您无法创建使用已删除层版本的新函数。

**向函数添加层**

1. 打开 Lamba 控制台的[函数](https://console.aws.amazon.com/lambda/home#/functions)页面。

1. 选择函数。

1. 向下滚动到**层**部分，然后选择**添加层**。

1. 在**选择层**下，选择一个层源：

   1. **AWS 层**：从 [AWS 托管扩展](extensions-api-partners.md#aws-managed-extensions)列表中进行选择。

   1. **自定义层**：选择在您的 AWS 账户中创建的层。

   1. **指定 ARN**：要使用[其他 AWS 账户](permissions-layer-cross-account.md)的层（例如[第三方扩展](extensions-api-partners.md)），请输入 Amazon 资源名称（ARN）。

1. 选择**添加**。

添加层的顺序就是 Lambda 将层内容合并到执行环境中的顺序。您可以使用控制台更改层合并顺序。

**更新函数的层合并顺序（控制台）**

1. 打开 Lamba 控制台的[函数](https://console.aws.amazon.com/lambda/home#/functions)页面。

1. 选择要配置的函数。

1. 在**层**下，选择**编辑**。

1. 选择其中一个图层。

1. 选择**提前合并**或者**稍后合并**以调整层的顺序。

1. 选择**保存**。

层受版本控制。每个层版本的内容都是不可变的。层所有者可以发布新的层版本以提供更新内容。您可以使用控制台更新附加到函数的层版本。

**更新函数的层版本（控制台）**

1. 打开 Lambda 控制台的 [Layers page](https://console.aws.amazon.com/lambda/home#/layers)（层页面）。

1. 选择要为其更新版本的层。

1. 选择**使用此版本的函数**选项卡。

1. 选择要修改的函数，然后选择**编辑**。

1. 从**层版本**中，选择要更改的目标层版本。

1. 选择 **Update functions**（更新函数）。

不能跨 AWS 账户更新函数的层版本。

## 查找层信息
<a name="finding-layer-information"></a>

要查找账户中与函数运行时系统兼容的层，请使用 [ListLayers](https://docs.aws.amazon.com/lambda/latest/api/API_ListLayers.html) API。例如，您可以使用以下 [list-layers](https://docs.aws.amazon.com/cli/latest/reference/lambda/list-layers.html) AWS Command Line Interface（CLI）命令：

```
aws lambda list-layers --compatible-runtime python3.14
```

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

```
{
    "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": "2025-04-15T00:37:46.592+0000",
                "CompatibleRuntimes": [
                    "python3.14"
                ]
            }
        }
    ]
}
```

要列出账户中的所有层，您可以省略 `--compatible-runtime` 选项。响应详细信息显示了每层的最新版本。

您还可以使用 [ListLayerVersions](https://docs.aws.amazon.com/lambda/latest/api/API_ListLayerVersions.html) 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"
            ]
        }
    ]
}
```