我遇到了一个问题,一旦ENI被分离并从该子网中删除,我的Lambda函数就不能再在VPC子网中创建新的ENI。我在两个不同的VPC和多个子网上重现了这个。
以下是我用来重现这个的步骤:
我在两个VPC中的多个子网上重复这些步骤,现在Lambda函数无法在任何这些子网中创建新的ENI。
似乎VPC子网永远无法使用Lambda函数创建新的ENI,但在让事情放在一夜之后我今天早上再次运行该函数并且能够创建一个ENI。 AWS必须具有清理某些内容的自动化流程。即便如此,我再次测试了分离和删除,我又回到了Lambda函数不会创建新ENI的状态。
不知道这里发生了什么。在拆卸ENI时,我没有选择“Force Detach”。我究竟做错了什么?
根据我今天下午所做的研究,这似乎是在VPC中运行的Lambda函数的限制,并且已经持续了一年多。在删除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就会消失。
我最近遇到了类似的问题。我无法删除sg或子网,因为它们被其他堆栈使用。我想出如果我强迫lambda冷启动,它可能会创建新的eni。为了测试这个,我分配了最大内存和超时。有效。