我想解決 AWS CloudFormation 中的「無法刪除最後套用的政策」錯誤。
簡短說明
當您嘗試刪除 CloudFormation 堆疊或政策資源 (例如 AWS::SQS::QueuePolicy、AWS::S3::BucketPolicy 和 AWS::SNS::TopicPolicy) 時,您可能會收到下列錯誤:
「無法刪除最後套用的政策。在刪除最後套用的政策之前,請刪除套用於此資源的其他政策。」
如果您對相同資源套用政策後又套用另一個政策,則第二個政策將成為最後套用的政策。當您嘗試刪除第二個政策時,CloudFormation 不允許您刪除該政策。
根據以下情境針對此錯誤進行疑難排解:
- 堆疊和政策資源處於 DELETE_FAILED 狀態。
- 當有其他堆疊部署的其他原則資源時,系統會刪除該政策資源。
解決方法
注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
堆疊和政策資源處於 DELETE_FAILED 狀態
如果您嘗試刪除堆疊,但政策資源未刪除,請嘗試再次刪除堆疊並略過該資源。若要解決處於 DELETE_FAILED 狀態的堆疊和政策,請執行下列其中一個動作:
當您完成上述動作之一並再次嘗試刪除堆疊時,系統將不會刪除您選擇要保留的資源。堆疊的狀態變更為 DELETE_COMPLETE。
注意: 若要避免不必要的費用,請在刪除堆疊時手動刪除保留的資源。如果已刪除套用政策的資源,則無需手動刪除資源。當您刪除目標資源時,政策資源也會刪除。
如需更多資訊,請參閱如何刪除卡在 DELETE_FAILED 狀態的 AWS CloudFormation 堆疊?
刪除套用至相同資源的不同堆疊中的政策資源
如果您將來自不同堆疊的多個政策套用至相同資源,則必須刪除所套用的第一個政策。
例如,您在 example-stack-A 中建立 ExamplePolicyA 並將政策套用到 exampleQueue1。然後,在 example-stack-B 中建立 ExamplePolicyB,並將政策以不同的權限套用至 exampleQueue1。當您嘗試刪除 ExamplePolicyB 時,您會收到以下錯誤:
「無法刪除最後套用的政策。在刪除最後套用的政策之前,請刪除套用於此資源的其他政策。」
要刪除 ExamplePolicyB,您必須先刪除 ExamplePolicyA。
注意: 最佳做法是,在建立新政策之前,先刪除先前的政策。