Poursuite de la restauration d'une mise à jour - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Poursuite de la restauration d'une mise à jour

Parfois, lorsque vous CloudFormation essayez d'annuler une mise à jour de la pile, il ne peut pas annuler toutes les modifications apportées au cours du processus de mise à jour. C’est ce qu’on appelle l’état UPDATE_ROLLBACK_FAILED. Par exemple, vous pouvez avoir une pile qui commence à revenir à une ancienne instance de base de données supprimée en dehors de CloudFormation. Comme CloudFormation ne sait pas que la base de données a été supprimée, il suppose qu'elle existe toujours et tente de l'utiliser pour effectuer la restauration, ce qui entraîne l'échec de l'opération.

Une pile dans l’état UPDATE_ROLLBACK_FAILED ne peut pas être mise à jour, mais elle peut être restaurée à un état fonctionnel (UPDATE_ROLLBACK_COMPLETE). Après avoir rétabli les paramètres d’origine de la pile, vous pouvez essayer de la mettre à jour à nouveau.

Dans la plupart des cas, vous devez corriger l’erreur qui entraîne l’échec de la restauration de la mise à jour avant de pouvoir continuer à restaurer la pile. Dans d’autres cas, vous pouvez poursuivre la restauration de la mise à jour sans aucune modification (par exemple, lorsqu’une opération de la pile arrive à expiration).

Note

Si vous utilisez des piles imbriquées, la restauration de la pile parent tente de restaurer également toutes les piles enfants.

Pour poursuivre la restauration d'une mise à jour (console)
  1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.

  2. Dans la barre de navigation en haut de l'écran, choisissez l' Région AWS emplacement de la pile.

  3. Sur la page Piles, sélectionnez la pile que vous voulez mettre à jour, sélectionnez Actions de pile, puis sélectionnez Continuer la restauration de la mise à jour.

    Si aucune des solutions ne Résolution des erreurs fonctionne, vous pouvez utiliser l'option avancée pour ignorer les ressources qui ne CloudFormation peuvent pas être restaurées avec succès. Vous devez rechercher et saisir la logique IDs des ressources que vous souhaitez ignorer. Spécifiez uniquement les ressources qui sont passées à l’état UPDATE_FAILED pendant l’état UpdateRollback et non pendant la mise à jour directe.

    Avertissement

    CloudFormation définit le statut des ressources spécifiées sur UPDATE_COMPLETE et continue de faire reculer la pile. Une fois la restauration terminée, l’état des ressources ignorées ne correspond pas à celui des ressources contenues dans le modèle de pile. Avant de procéder à une autre mise à jour de pile, vous devez mettre à jour la pile ou les ressources de façon à les rendre cohérentes les unes par rapport aux autres. A défaut, les futures mises à jour de la pile risquent d’échouer et la pile deviendra irrécupérable.

    Spécifiez le nombre minimum de ressources requises pour restaurer votre pile avec succès. Par exemple, une mise à jour de ressource ayant échoué peut entraîner l'échec de ressources dépendantes. Dans ce cas, il n'est peut-être pas nécessaire d'ignorer les ressources dépendantes.

    Pour ignorer des ressources faisant partie de piles imbriquées, utilisez le format suivant : NestedStackName.ResourceLogicalID. Si vous souhaitez spécifier l’ID logique d’une ressource de pile (Type: AWS::CloudFormation::Stack) dans la liste ResourcesToSkip, sa ressource de pile imbriquée correspondante doit être à l’un des états suivants : DELETE_IN_PROGRESS, DELETE_COMPLETE ou DELETE_FAILED.

Pour poursuivre la restauration d'une mise à jour (AWS CLI)
  • Utilisez la commande continue-update-rollback avec l’option --stack-name pour spécifier l’ID de la pile que vous voulez continuer à restaurer.

Continuer la restauration à partir des mises à jour de piles imbriquées ayant échoué

Lorsque vous avez plusieurs piles imbriquées les unes dans les autres, vous devrez peut-être ignorer les ressources sur plusieurs niveaux imbriqués pour que la pile complète revienne à un état fonctionnel.

Par exemple, vous avez une pile racine appelée WebInfra qui contient deux piles plus petites à l’intérieur : WebInfra-Compute et WebInfra-Storage. Ces deux piles ont également leurs propres piles imbriquées à l’intérieur.

Si un problème survient pendant une mise à jour et que le processus de mise à jour échoue, toute la hiérarchie de la pile peut se retrouver dans l’état UPDATE_ROLLBACK_FAILED, comme illustré dans le diagramme suivant.

Schéma illustrant une hiérarchie de piles imbriquées à trois niveaux.
Note

Les noms de pile de cet exemple sont tronqués par souci de simplification. Les noms des piles d'enfants sont généralement générés par CloudFormation et contiennent des chaînes aléatoires uniques, de sorte que les noms réels peuvent ne pas être faciles à utiliser.

Pour que la pile racine redevienne opérationnelle à l’aide de la commande continue-update-rollback, vous devez utiliser l’option --resources-to-skip pour ignorer les ressources dont la restauration a échoué.

L’exemple continue-update-rollback suivant reprend une opération de restauration suite à un échec antérieur de la mise à jour de la pile. Dans cet exemple, l’option --resources-to-skip inclut les éléments suivants :

  • myCustom

  • WebInfra-Compute-Asg.myAsg

  • WebInfra-Compute-LB.myLoadBalancer

  • WebInfra-Storage.DB

Pour les ressources de la pile racine, il suffit de fournir l’ID logique, par exemple myCustom. Cependant, pour les ressources contenues dans des piles imbriquées, vous devez fournir à la fois le nom de la pile imbriquée et son ID logique, séparés par un point. Par exemple, WebInfra-Compute-Asg.myAsg.

aws cloudformation continue-update-rollback --stack-name WebInfra \ --resources-to-skip myCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB
Pour trouver le nom d’une pile imbriquée

Vous pouvez le localiser dans l’ID de pile ou le nom de ressource Amazon Resource Name (ARN) de la pile enfant.

L’exemple d’ARN suivant fait référence à une pile nommée WebInfra-Storage-Z2VKC706XKXT.

arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd
Pour trouver l’ID logique d’une pile imbriquée

Vous pouvez trouver l’ID logique d’une pile enfant dans le définition de modèle de son parent. Dans le diagramme, le LogicalId de la pile enfant WebInfra-Storage-DB est DB dans sa pile parent WebInfra-Storage.

Dans la CloudFormation console, vous pouvez également trouver l'identifiant logique dans la colonne ID logique de la ressource de pile sous l'onglet Ressources ou dans l'onglet Événements. Pour de plus amples informations, veuillez consulter Afficher les informations relatives à la pile depuis la CloudFormation console.