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

时间:2017-08-18 15:13:54

标签: amazon-web-services aws-lambda

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

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

  1. 创建Lambda函数并将其与VPC和子网关联。
  2. 执行Lambda函数,使其在子网中创建新的ENI。该功能可以访问VPC中的RDS数据库。
  3. 手动分离并从子网中删除ENI。
  4. 再次执行Lambda函数。不会创建ENI。 Lambda函数无法访问RDS数据库。
  5. 我在两个VPC中的多个子网中重复这些步骤,现在Lambda函数无法在任何这些子网中创建新的ENI。

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

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

2 个答案:

答案 0 :(得分:5)

从我今天下午所做的研究来看,这似乎是在VPC中运行的Lambda函数的限制,已经持续了一年多。删除Lambda函数后,清除ENI的时间延迟了6个小时。我手动分离和删除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就会消失。

答案 1 :(得分:2)

我最近遇到了类似的问题。我无法删除sg或子网,因为它们正被其他堆栈使用。我发现如果我强制lambda进行冷启动,可能会创建新的eni。为了测试这一点,我分配了最大内存和超时时间。奏效了。