Desidero risolvere l'errore "Last applied policy cannot be deleted" in AWS CloudFormation.
Breve descrizione
Quando provi a eliminare uno stack o le risorse di policy di CloudFormation, come AWS::SQS::QueuePolicy, AWS::S3::BucketPolicy e AWS::SNS::TopicPolicy, potresti ricevere il seguente errore:
"Last applied policy cannot be deleted. Please delete other policies applied to this resource before deleting the last applied policy."
Se applichi una policy dopo un'altra sulla stessa risorsa, la seconda policy diventa l'ultima policy applicata. Quando provi a eliminare la seconda policy, CloudFormation non ti consente di eliminarla.
Risolvi questo errore in base ai seguenti scenari:
- Lo stack e la risorsa della policy sono nello stato DELETE_FAILED.
- La risorsa della policy viene eliminata quando sono presenti altre risorse della policy distribuite da altri stack.
Risoluzione
Nota: se si verificano errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Lo stack e la risorsa della policy sono nello stato DELETE_FAILED
Se hai provato a eliminare uno stack e la risorsa della policy non è stata eliminata, riprova a eliminare lo stack e ignora la risorsa. Per risolvere uno stack e una policy che si trovano nello stato DELETE_FAILED, intraprendi una delle seguenti azioni:
Quando completi una delle azioni precedenti e provi a eliminare nuovamente lo stack, le risorse che hai scelto di mantenere non vengono eliminate. Lo stato dello stack cambia in DELETE_COMPLETE.
Nota: per evitare addebiti non necessari, elimina manualmente le risorse mantenute quando elimini lo stack. Se la risorsa a cui hai applicato la policy viene eliminata, non è necessario eliminare manualmente le risorse. La risorsa della policy viene eliminata quando elimini la risorsa di destinazione.
Per ulteriori informazioni, consulta Come posso eliminare uno stack AWS CloudFormation bloccato allo stato DELETE_FAILED?
Elimina le risorse di policy da diversi stack che hai applicato alla stessa risorsa
Se hai applicato più policy da stack diversi alla stessa risorsa, devi eliminare la prima policy applicata.
Ad esempio, crei EsempioPolicyA in example-stack-A e applichi la policy a esempioCoda1. Quindi crei EsempioPolicyB in example-stack-B e applichi la policy a esempioCoda1 con autorizzazioni diverse. Quando tenti di eliminare EsempioPolicyB, ricevi il seguente errore:
"Last applied policy cannot be deleted. Please delete other policies applied to this resource before deleting the last applied policy."
Per eliminare ExamplePolicyB, devi prima eliminare ExamplePolicyA.
Nota: è consigliabile eliminare le policy precedenti prima di crearne una nuova.