为什么我无法分离或删除通过 Lambda 创建的弹性网络接口?

上次更新时间:2020 年 3 月 27 日

在我尝试分离或删除由 AWS Lambda 创建的弹性网络接口时,收到了错误消息“You are not allowed to manage 'ela-attach' attachments.” 为什么我无法删除网络接口?

简短描述

由 Lambda 创建的网络接口只能通过 Lambda 删除。有关更多信息,请参阅请求方托管的网络接口

Lambda 会使用创建相应网络接口的函数的执行角色,定期代表您删除由 Lambda 创建的、未使用的网络接口。Lambda 不会删除您账户中的如下网络接口:目前由使用与创建网络接口的函数相同的 Amazon Virtual Private Cloud (Amazon VPC) 配置的函数或函数版本使用的网络接口。

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

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

解决方法

运行 Lambda ENI Finder

注意:以下说明中的命令仅适用于 Linux/Unix/macOS 系统。

1.    如果您尚未安装 AWS 命令行界面 (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
$ git clone https://github.com/awslabs/aws-support-tools.git

6.    将目录更改为 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) 控制台的“网络接口”页面上可以找到该 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 小时内为您的网络接口删除相应网络接口。