[英]Terraform plan getting Error: Failed to decode resource from 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 代碼,但我認為我的資源堆棧中沒有什么特別之處,主要包括:
在我的例子中,問題似乎與附加到 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 和安全組刪除問題和改進
在我已經將服務部署到集群(特別是負載均衡器)之后,我在嘗試銷毀 EKS 集群時遇到了這個問題。 為了解決這個問題,我手動刪除了負載均衡器和與負載均衡器關聯的安全組。
Terraform不知道k8s提供的資源,不會清理依賴資源。
如果您不確定哪些資源正在阻止 Terraform 破壞基礎設施,您可以嘗試以下方法:
terraform apply
回到一個好的 state 然后使用kubectl
清理資源,然后再次運行terraform destroy
。AmazonEKS
。 此問題的另一個變體是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.