Je souhaite supprimer ma pile AWS CloudFormation, mais elle est bloquée à l’état DELETE_FAILED.
Brève description
Votre pile est peut-être bloquée à l’état DELETE_FAILED pour l’une des raisons suivantes :
- Une ressource de pile compte un objet dépendant ou d’autres dépendances que vous ne pouvez pas supprimer.
- Le rôle de service que vous utilisez n'est pas valide ou vous ne pouvez pas endosser le rôle Gestion des identités et des accès AWS (AWS IAM).
- Une ressource personnalisée ne se stabilise pas dans le délai de réponse par défaut.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Supprimer une pile contenant des dépendances que vous ne pouvez pas supprimer
Les problèmes de dépendance peuvent survenir généralement lorsque vous effectuez un changement hors bande. Par exemple, votre pile compte un groupe de sécurité attaché à une interface réseau Elastic qui ne fait pas partie de votre pile. Vous ne pouvez pas supprimer votre pile car il n’est pas possible de supprimer le groupe de sécurité. Pour supprimer une pile tout en conservant la ressource qui comporte des dépendances, utilisez la console CloudFormation pour forcer la suppression de la pile. Vous pouvez également exécuter les commandes de l’AWS CLI suivantes.
Pour supprimer une pile bloquée à l’état DELETE_FAILED et retenir les ressources qui n'ont pas été supprimées, exécutez la commande delete-stack suivante :
aws cloudformation delete-stack --stack-name my-stack --retain-resources myresource1 myresource2
Remarque : Remplacez my-stack par le nom de votre pile, et myresource1 et myresource2 par les ID des ressources qui n'ont pas été supprimées.
CloudFormation supprime la pile, mais ne supprime pas les ressources que vous avez retenues. L’état de votre pile passe à DELETE_COMPLETE.
Remarque : Pour éviter des frais pour les ressources retenues, supprimez manuellement les ressources retenues après avoir supprimé votre pile.
Pour forcer la suppression d'une pile dont les dépendances ne peuvent pas être supprimées, exécutez la commande delete-stack suivante :
aws cloudformation delete-stack --stack-name my-stack --deletion-mode FORCE_DELETE_STACK
Remarque : Remplacez my-stack par le nom de votre pile.
Supprimer une pile dont le rôle n'est pas valide
Si vous tentez de supprimer une pile utilisant un rôle de service qui n'existe plus, le message d'erreur suivant s'affiche :
"An error occurred (ValidationError) when calling the DeleteStack operation: Role is invalid or cannot be assumed."
Pour résoudre ce problème, procédez comme suit :
- Ouvrez la console CloudFormation.
- Sélectionnez la pile que vous souhaitez supprimer.
- Dans l'onglet Informations sur la pile, notez le nom du rôle IAM de la pile.
- Créez un rôle IAM portant le même nom que le rôle IAM de l'étape précédente. Important : Lorsque vous créez votre rôle IAM, vérifiez qu’il dispose d’autorisations pour supprimer les ressources de la pile.
- Supprimer la pile à l’aide de la console CloudFormation.
Si vous ne vous souvenez pas des autorisations correspondantes à un rôle supprimé, il n’est pas possible de créer un nouveau rôle avec les mêmes autorisations pour supprimer la pile. Obtenez un nouveau rôle, puis exécutez la commande delete-stack suivante avec le nouveau rôle pour supprimer la pile :
aws cloudformation delete-stack --stack-name my-stack --role-arn new_role
Remarque : Remplacez my-stack par le nom de votre pile et new_role par l'Amazon Resource Number (ARN) de votre nouveau rôle.
Supprimer une pile pour une ressource personnalisée qui ne se stabilise pas
Pour résoudre ce problème, consultez la section Comment supprimer une ressource personnalisée basée sur Lambda qui est bloquée à l’état DELETE_FAILED ou DELETE_IN_PROGRESS dans CloudFormation ?
Informations connexes
DeleteStack