如何解決 CloudFormation 中的「無法刪除最後套用的政策」錯誤?

1 分的閱讀內容
0

我想解決 AWS CloudFormation 中的「無法刪除最後套用的政策」錯誤。

簡短說明

當您嘗試刪除 CloudFormation 堆疊或政策資源 (例如 AWS::SQS::QueuePolicyAWS::S3::BucketPolicyAWS::SNS::TopicPolicy) 時,您可能會收到下列錯誤:

「無法刪除最後套用的政策。在刪除最後套用的政策之前,請刪除套用於此資源的其他政策。」

如果您對相同資源套用政策後又套用另一個政策,則第二個政策將成為最後套用的政策。當您嘗試刪除第二個政策時,C​​loudFormation 不允許您刪除該政策。

根據以下情境針對此錯誤進行疑難排解:

  • 堆疊和政策資源處於 DELETE_FAILED 狀態。
  • 當有其他堆疊部署的其他原則資源時,系統會刪除該政策資源。

解決方法

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

堆疊和政策資源處於 DELETE_FAILED 狀態

如果您嘗試刪除堆疊,但政策資源未刪除,請嘗試再次刪除堆疊並略過該資源。若要解決處於 DELETE_FAILED 狀態的堆疊和政策,請執行下列其中一個動作:

  • 開啟 CloudFormation 主控台,然後選擇刪除堆疊。在「您可以保留無法刪除的資源」快顯視窗中,在要保留的資源下,選擇政策資源。
  • 執行下列 AWS CLI 命令:
    aws cloudformation delete-stack --stack-name example-stack-name --retain-resources example-policy-resource-id
    注意:example-stack-name 替換為無法刪除的堆疊。將 example-policy-resource-id 替換為刪除失敗之政策資源的 ID。

當您完成上述動作之一並再次嘗試刪除堆疊時,系統將不會刪除您選擇要保留的資源。堆疊的狀態變更為 DELETE_COMPLETE

注意: 若要避免不必要的費用,請在刪除堆疊時手動刪除保留的資源。如果已刪除套用政策的資源,則無需手動刪除資源。當您刪除目標資源時,政策資源也會刪除。

如需更多資訊,請參閱如何刪除卡在 DELETE_FAILED 狀態的 AWS CloudFormation 堆疊?

刪除套用至相同資源的不同堆疊中的政策資源

如果您將來自不同堆疊的多個政策套用至相同資源,則必須刪除所套用的第一個政策。

例如,您在 example-stack-A 中建立 ExamplePolicyA 並將政策套用到 exampleQueue1。然後,在 example-stack-B 中建立 ExamplePolicyB,並將政策以不同的權限套用至 exampleQueue1。當您嘗試刪除 ExamplePolicyB 時,您會收到以下錯誤:

「無法刪除最後套用的政策。在刪除最後套用的政策之前,請刪除套用於此資源的其他政策。」

要刪除 ExamplePolicyB,您必須先刪除 ExamplePolicyA

注意: 最佳做法是,在建立新政策之前,先刪除先前的政策。

AWS 官方
AWS 官方已更新 1 年前