CloudFormation 正在等待清理与 Lambda 函数关联的 NetworkInterfaces
Posted
技术标签:
【中文标题】CloudFormation 正在等待清理与 Lambda 函数关联的 NetworkInterfaces【英文标题】:CloudFormation is waiting for NetworkInterfaces associated with the Lambda Function to be cleaned up 【发布时间】:2020-02-26 15:57:16 【问题描述】:我在 VPC 中有一个带有 Lambda 函数的 CloudFormation 堆栈, 尝试删除堆栈时,AWS CloudFormation 至少会卡住 25-30, 我在事件中收到以下消息 -
CloudFormation is waiting for NetworkInterfaces associated with the Lambda Function to be cleaned up.
这似乎是由于 ENI 被附加到函数和安全组。
从控制台它不允许我强制删除 ENI,也不允许我删除 ENI 所附加到的安全组, 所以我只需要等待吗?
我发现了一些问题和博客,它们甚至有 2 年的历史了, AWS 没有解决方案? 自动化应该很快,但事实证明这是一个巨大的障碍。
参考 -CloudFormation issue: couldn't delete stackhttps://forum.serverless.com/t/very-long-delay-when-doing-sls-remove-of-lambda-in-a-vpc/2535
【问题讨论】:
有一个未解决的问题:github.com/serverless/serverless/issues/5008 这是 VPC 中 Lambda 的一个众所周知的问题。由于您似乎没有意识到这一点,他们已经提出了解决此问题的方法,您只需等待它在您所在地区推出:aws.amazon.com/blogs/compute/… 新的超平面 ENI 仍然存在此问题。 如果可能,为 lambda 引用现有安全组会显着减少此时间(尽管显然这并不能解决根本问题) 直到几个月前,您还可以通过控制台手动访问 Detach,然后删除(以避免 cloudformation 长时间等待删除),但对于 ENI 拥有的“黑客”现在已关闭一个堆栈。 【参考方案1】:正如您和其他人已经提到的,这是一个已知问题/“功能”。当我上次与来自 AWS 的人谈论这件事时,并没有改变这种行为的计划。如果时间对您来说真的很重要,您可以尝试一种解决方法:
更新 CloudFormation 中的 Lambda 资源,将 DeletionPolicy
设置为 Retain
。
手动(或通过脚本/API)删除 Lambda 和 ENI 等相关资源
但是,我不建议反对上述解决方法。很容易忘记一些会让您处于混乱环境中的东西。
【讨论】:
【参考方案2】:我仍然面临同样的问题。奇怪的是,即使 AWS 人员提到他们已修复它 (https://aws.amazon.com/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/)
缓解问题的解决方法:
获取处于等待状态的 Lambda 函数(具有 VPC 连接)的列表。手动或自动删除它们。 使用“ec2:DeleteNetworkInterface”和“ec2:DetachNetworkInterface”添加 Lambda 函数 IAM(policy)。 将 VPC 设置为“保留”的 Lambda 函数在 CF 上更改 DeletionPolicy【讨论】:
以上是关于CloudFormation 正在等待清理与 Lambda 函数关联的 NetworkInterfaces的主要内容,如果未能解决你的问题,请参考以下文章
我可以强制CloudFormation删除非空的S3 Bucket吗?
从 Lambda 函数内部访问 AWS CloudFormation ARN
如何修复与 AWS::CloudFormation::Init 一起创建 EC2 的 cloudformation 模板
如何使用Cloudformation解析AWS上的免费层RHEL AMI ID?