Terraform 上的 AWS:删除资源时出错:等待状态“销毁”时超时

Rtm*_*tmY 5 amazon-web-services terraform terraform-provider-aws

我正在使用 Terraform ( v0.12.28) 启动我的 AWS 环境 ( aws provider v2.70.0)。
当我尝试删除所有资源时,terraform destroy我遇到以下错误:

error deleting subnet (subnet-XXX): timeout while waiting for state to become 'destroyed' (last state: 'pending', timeout: 20m0s)
Run Code Online (Sandbox Code Playgroud)

我可以添加我的 Terraform 代码,但我认为我的资源堆栈中没有什么特别的,它基本上包括:

  1. VPC 和子网。
  2. 互联网和 NAT GTW。
  3. 应用程序负载均衡器。
  4. 路由表。
  5. 自动生成的 NACL 和弹性网络接口 (ENI)。

就我而言,问题似乎与附加到 ALB 的 ENI 有关 - 从 AWS 控制台可以看出:

在此输入图像描述

在寻找解决方案时,我注意到这是一个常见问题,可能出现在不同的资源和依赖类型中。

我将在这个问题中重点关注与 VPC 组件(子网、ENI 等)以及依赖于它们的资源(负载均衡器、EC2、Lambda 函数等)相关的问题,并且可能由于以下原因无法删除事实上,删除之前需要一个分离阶段。

任何帮助将不胜感激。


(*) 此环境的 Terraform 用户 (DEV) 具有完整的管理员权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

所以这应该与政策无关。


相关问题的示例:

更新:在 AWS Lambda 的 VPC 改进后影响 HashiCorp Terraform 资源删除的问题(解决方案不起作用 - 我有 AWS 提供商的更新版本)。

AWS VPC - 无法分离“使用中”的 AWS Lambda VPC ENI

Lambda 关联的 EC2 子网和安全组删除问题和改进

AWS:由于扩展组而删除子网超时

等待路由表 (rtb-xxxxxx) 被破坏时出错:等待状态变为超时

等待互联网网关分离时出错/集群已附加节点组

Mat*_*ley 6

在我已经将服务(特别是负载均衡器)部署到 EKS 集群上之后,我在尝试销毁 EKS 集群时遇到了这个问题。为了解决此问题,我手动删除了负载均衡器以及与负载均衡器关联的安全组。

Terraform 不知道 k8s 提供的资源,也不会清理依赖的资源。

如果您不确定哪些资源阻止 Terraform 破坏基础设施,您可以尝试以下方法:

此问题的另一种变体是DependencyViolation错误。前任:

删除 VPC 时出错:DependencyViolation:vpc“vpc-xxxxx”具有依赖项,无法删除。状态码:400