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?

SAM API 网关与 Cloudformation WAFRegional

AWS CLI 仅列出当前正在运行的 cloudformation 堆栈的名称?