Quero resolver o erro “A última política aplicada não pode ser excluída” no AWS CloudFormation.
Breve descrição
Quando você tenta excluir sua pilha ou recursos de política do CloudFormation, como AWS::SQS::QueuePolicy, AWS::S3::BucketPolicy e AWS::SNS::TopicPolicy, você pode receber o seguinte erro:
“A última política aplicada não pode ser excluída. Exclua as demais políticas aplicadas a esse recurso antes de excluir a última política aplicada.”
Se você aplicar uma política após outra no mesmo recurso, a segunda política se tornará a última aplicada. Quando você tenta excluir a segunda política, o CloudFormation não permite que você a exclua.
Solucione esse erro com base nos seguintes cenários:
- A pilha e o recurso de política encontram-se no estado DELETE\ _FAILED.
- O recurso de política é excluído quando há outros recursos de política que outras pilhas implantaram.
Resolução
Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
A pilha e o recurso de política encontram-se no estado DELETE\ _FAILED
Se você tentou excluir uma pilha e o recurso de política não foi excluído, tente excluir a pilha novamente e pule o recurso. Para resolver uma pilha e uma política que estão no estado DELETE\ _FAILED, execute uma das seguintes ações:
Quando você conclui uma das ações anteriores e tenta excluir a pilha novamente, os recursos que você selecionou para reter não são excluídos. O status da sua pilha mudará para DELETE_COMPLETE.
**Observação:**para evitar cobranças desnecessárias, exclua manualmente os recursos retidos ao excluir a pilha. Se o recurso ao qual você aplicou a política for excluído, não será necessário excluir manualmente os recursos. O recurso de política é excluído quando você exclui o recurso de destino.
Para mais informações, consulte Como excluo uma pilha do AWS CloudFormation que está presa no status DELETE_FAILED?
Excluir recursos de política de diferentes pilhas que aplicou ao mesmo recurso
Se você aplicou várias políticas de pilhas diferentes ao mesmo recurso, deverá excluir a primeira política aplicada.
Por exemplo, você cria ExamplePolicyA em example-stack-A e aplica a política a exampleQueue1. Em seguida, você cria ExamplePolicyB em example-stack-B e aplica a política a exampleQueue1 com permissões diferentes. Quando você tenta excluir ExamplePolicyB, recebe o seguinte erro:
“A última política aplicada não pode ser excluída. Exclua as demais políticas aplicadas a esse recurso antes de excluir a última política aplicada.”
Para excluir ExamplePolicyB, você deve primeiro excluir ExamplePolicyA.
**Observação:**é uma prática recomendada excluir políticas anteriores antes de criar uma nova.