在手动从子网分离ENI后,VPC中的Lambda不会创建新的ENI

问题描述 投票:3回答:2

我遇到了一个问题,一旦ENI被分离并从该子网中删除,我的Lambda函数就不能再在VPC子网中创建新的ENI。我在两个不同的VPC和多个子网上重现了这个。

以下是我用来重现这个的步骤:

  1. 创建Lambda函数并将其与VPC和子网关联。
  2. 执行Lambda函数,这将导致它在子网中创建新的ENI。该功能可以访问VPC中的RDS数据库。
  3. 手动分离并从子网中删除ENI。
  4. 再次执行Lambda函数。不会创建ENI。 Lambda函数无法访问RDS数据库。

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

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

不知道这里发生了什么。在拆卸ENI时,我没有选择“Force Detach”。我究竟做错了什么?

amazon-web-services aws-lambda
2个回答
6
投票

根据我今天下午所做的研究,这似乎是在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就会消失。


3
投票

我最近遇到了类似的问题。我无法删除sg或子网,因为它们被其他堆栈使用。我想出如果我强迫lambda冷启动,它可能会创建新的eni。为了测试这个,我分配了最大内存和超时。有效。


推荐问答