为什么我不能分离或删除 Lambda 创建的弹性网络接口?

上次更新时间:2021 年 12 月 1 日

我尝试分离或删除 AWS Lambda 创建的弹性网络接口时,收到以下错误消息:“You are not allowed to manage 'ela-attach' attachments.” 为什么会发生这种情况,我如何删除 Lambda 创建的网络接口?

简短描述

当您将 Lambda 函数配置为访问 Amazon Virtual Private Cloud (Amazon VPC) 中的资源时,Lambda 会将该函数分配给网络接口。Lambda 创建的网络接口只能由 Lambda 服务删除。

如果您删除网络接口代表的资源,则 Lambda 会为您分离并删除该网络接口。要删除未使用的网络接口,Lambda 服务将使用创建网络接口的函数的执行角色

如果网络接口由与创建它们的函数具有相同 Amazon VPC 配置的函数或函数版本使用,则它们不会被删除。

要确定哪些函数或函数版本目前在使用某个网络接口,请使用 GitHub 上的 Lambda ENI Finder bash 脚本。

有关更多信息,请参阅请求方托管的网络接口

注意:Lambda 在使用相同 Amazon VPC 配置的多个函数间共享网络接口。共享网络接口有助于减少您的 AWS 账户中使用的网络接口数量。

解决方法

注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

通过运行 Lambda ENI Finder 来识别仍在使用网络接口的所有函数和函数版本

注意:以下说明中的命令仅对 Linux、Unix 和 macOS 操作系统有效。

1.    如果您尚未完成,请安装 AWS CLI

2.    使用一个具备查询 Lambda 和网络接口权限的 AWS Identity and Access Management (IAM) 角色,配置 AWS CLI。有关更多信息,请参阅执行角色和用户权限

3.    通过运行以下命令安装命令行 JSON 处理器 jq:

$ sudo yum install jq -y

注意:有关更多信息,请参阅 GitHub 上的 jq 网站

4.    如果您还没有这样做,请运行以下命令来安装 Git:

$ sudo yum install git -y

5.    通过运行以下命令来克隆 aws-support-tools GitHub 存储库

$ git clone https://github.com/awslabs/aws-support-tools.git

6.    将目录更改为 Lambda ENI Finder 的位置

Lambda ENI Finder 位置

$ cd aws-support-tools
$ cd Lambda
$ cd FindEniMappings

7.    通过运行以下命令,为要删除的网络接口运行 Lambda ENI Finder:

./findEniAssociations --eni eni-0123456789abcef01 --region us-east-1

重要提示:eni-0123456789abcef01 替换为网络接口的 ID。(您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 控制台Network Interfaces(网络接口)页面上找到此 ID。 另外,将 us-east-1 替换为网络接口所在的 AWS 区域。

输出会返回您的 AWS 账户中以及指定的区域内使用相应网络接口的 Lambda 函数和函数版本的列表。

注意:如果您仍然需要这些函数或函数版本,那么您可能不该删除该网络接口。

要删除 Lambda 创建的网络接口

1.    对于 Lambda ENI Finder 列出的每个未发布的 Lambda 函数版本 ($LATEST),请执行以下操作之一:

更改 Amazon VPC 配置以使用不同的子网和安全组。

-或者-

断开该函数与 Amazon VPC 的连接。

2.    对于所列出的每个已发布的 Lambda 函数版本,删除相应的函数版本。
注意:已发布的函数版本无法编辑,因此您无法更改 VPC 配置。

3.    再次运行 Lambda ENI Finder,验证网络接口是否已不再被使用。

如果输出结果中未列出其他函数或函数版本,Lambda 将在 24 小时内自动删除相应的网络接口。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?