簡體   English   中英

Terraform 上的 AWS:刪除資源時出錯:等待 state 變為“已銷毀”時超時

[英]AWS on Terraform: Error deleting resource: timeout while waiting for state to become 'destroyed'

我正在使用 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)

我可以添加我的 Terraform 代碼,但我認為我的資源堆棧中沒有什么特別之處,主要包括:

  1. VPC 和 Su.nets。
  2. Inte.net 和 NAT GTW。
  3. 應用程序負載均衡器。
  4. 路由表。
  5. 自動生成的 NACL 和彈性網絡接口 (ENI)。

在我的例子中,問題似乎與附加到 ALB 的 ENI 有關——從 AWS 控制台可以看出:

在此處輸入圖像描述

在尋找解決方案時,我注意到這是一個常見問題,可能來自不同的資源和依賴類型。

我將在這個問題中重點關注與 VPC 組件(Su.nets、ENI 等)和依賴於它們的資源(負載均衡器、EC2、Lambda 函數等)相關的問題,並且可能由於無法刪除事實上,在刪除之前需要一個分離階段。

任何幫助將不勝感激。


(*) 此環境 (DEV) 的 Terraform 用戶具有完全的管理員權限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

所以這應該與政策無關。


相關問題的示例:

更新:在對 AWS Lambda 進行 VPC 改進后影響 HashiCorp Terraform 資源刪除的問題(解決方案不起作用 - 我有更新版本的 AWS 提供商)。

AWS VPC - 無法分離“使用中”AWS Lambda VPC ENI

Lambda 關聯的 EC2 Su.net 和安全組刪除問題和改進

AWS:由於縮放組,刪除 su.net 超時

等待路由表 (rtb-xxxxxx) 被破壞時出錯:等待 state 變為時超時

等待 inte.net 網關分離時出錯/集群已附加節點組

在我已經將服務部署到集群(特別是負載均衡器)之后,我在嘗試銷毀 EKS 集群時遇到了這個問題。 為了解決這個問題,我手動刪除了負載均衡器和與負載均衡器關聯的安全組。

Terraform不知道k8s提供的資源,不會清理依賴資源。

如果您不確定哪些資源正在阻止 Terraform 破壞基礎設施,您可以嘗試以下方法:

此問題的另一個變體是DependencyViolation錯誤。 前任:

刪除 VPC 時出錯:DependencyViolation:vpc 'vpc-xxxxx' 具有依賴項,無法刪除。 狀態碼:400

我剛才遇到了這個問題……

一種(hacky)解決方案是嘗試通過 AWS 控制台刪除子網。 然后 AWS 會告訴您是什么阻止了子網被刪除——對我來說,這是兩個網絡接口需要分離,然后在 Terraform 有權刪除我的子網之前刪除。

正如Mathew Tinsley所說,有時 AWS 隱式創建了 Terraform 無法自行銷毀的相關資源。

我在銷毀步驟 function 時遇到了類似的問題,問題是它有活躍的執行(狀態:正在運行)。 我阻止了它們,它成功刪除了步驟 function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM