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'UPDATE_ROLLBACK_FAILEDÉtat. Par exemple, vous pouvez avoir une pile qui commence à revenir à une ancienne instance de base de données supprimée à l'extérieur de CloudFormation. Comme il CloudFormation ne sait pas que la base de données a été supprimée, il suppose que l'instance de base de données existe toujours et tente d'y revenir, ce qui entraîne l'échec de l'annulation de la mise à jour.

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

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 AWS 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 Stacks, choisissez la pile que vous souhaitez mettre à jour, choisissez Stack actions, puis choisissez Continue update rollback.

    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 entrées dans UPDATE_FAILED cet état pendant 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)
  • Utilisation de la continue-update-rollbackcommande avec la --stack-name possibilité de spécifier l'ID de la pile que vous souhaitez continuer à annuler.

Poursuivre la restauration après l'échec des mises à jour de la pile imbriquée

Lorsque plusieurs piles sont imbriquées les unes dans les autres, il se peut que vous deviez ignorer les ressources entre plusieurs niveaux imbriqués pour que la hiérarchie complète des piles revienne à un état fonctionnel.

Par exemple, vous avez une pile racine appelée WebInfra qui contient deux piles plus petites : WebInfra-Compute etWebInfra-Storage. Ces deux piles contiennent également leurs propres piles imbriquées.

En cas de problème lors d'une mise à jour et que le processus de mise à jour échoue, l'ensemble de la hiérarchie de la pile peut se retrouver dans UPDATE_ROLLBACK_FAILED cet état, comme le montre le schéma 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 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 soit opérationnelle à l'aide de la continue-update-rollback commande, vous devez utiliser l'--resources-to-skipoption permettant d'ignorer les ressources qui n'ont pas pu être annulées.

L'continue-update-rollbackexemple suivant reprend une opération de restauration suite à un échec antérieur de la mise à jour de la pile. Dans cet exemple, l'--resources-to-skipoption 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 vous suffit de fournir l'identifiant logique, par exemplemyCustom. Toutefois, pour les ressources contenues dans des piles imbriquées, vous devez fournir à la fois le nom de la pile imbriquée et son identifiant 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 trouver dans l'ID de pile ou dans le nom de ressource Amazon (ARN) de la pile enfant.

L'ARNexemple suivant fait référence à une pile nomméeWebInfra-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, LogicalId la pile WebInfra-Storage-DB enfant se trouve DB dans sa pile parentWebInfra-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.