我遇到一个问题,一旦从该子网中断开ENI并将其删除后,Lambda函数就无法在VPC子网中创建新的ENI。我在两个不同的VPC和多个子网上复制了此内容。

这是我用来重现此步骤的步骤:


创建Lambda函数并将其与VPC和子网关联。
执行Lambda函数,这将使它在子网中创建一个新的ENI。该功能能够访问VPC中的RDS数据库。
手动分离并从子网中删除ENI。
再次执行Lambda函数。不会创建任何ENI。 Lambda函数无法访问RDS数据库。


我在两个VPC的多个子网中重复了这些步骤,现在Lambda函数无法在这些子网中的任何一个中创建新的ENI。

似乎VPC子网永久无法使用Lambda函数创建新的ENI,但是让事情待了一整夜后,我今天早上再次运行了该函数,并且能够创建ENI。 AWS必须具有自动清理流程。即便如此,我仍然测试了分离和删除,并且回到Lambda函数不会创建新ENI的状态。

不知道这是怎么回事。分离ENI时,我没有选择“强制分离”。我究竟做错了什么?

最佳答案

从今天下午我进行的研究来看,这似乎是Lambda函数在VPC中运行的限制,并且已经使用了一年多。删除Lambda函数后,清理ENI会有六个小时的延迟。我手动分离和删除ENI使得情况变得更糟,因为似乎ENI直到延迟六个小时后才真正被删除。手动删除似乎使ENI处于某种孤立状态,阻止在该子网中创建新的ENI,直到AWS清理了旧的ENI。

https://www.reddit.com/r/aws/comments/4fncrl/dangling_enis_after_deleting_an_invpc_lambda_with/

https://github.com/hashicorp/terraform/issues/5767

因此,目前看来,强制清理的唯一解决方案是删除ENI及其所在的子网。:-/

我让我的无服务器删除命令运行了很长时间(我没有通过手动删除ENI来加快速度),最终确实完成了,但是花了40分钟。 ENI被留下了,但其他所有内容都被清理了。我想象在六个小时内ENI将消失。

08-07 14:51
查看更多