Lorsque j'essaie de déployer mon application AWS Amplify, je reçois une erreur AWS CloudFormation similaire à la suivante : « Resource is not in the state stackUpdateComplete » (La ressource n'est pas dans l'état stackUpdateComplete). Comment résoudre ce problème ?
Brève description
Pour résoudre les problèmes de pile CloudFormation dans votre projet Amplify, identifiez d'abord ce qui cause le problème en examinant les éléments suivants dans la console CloudFormation :
- Le Status code (Code de statut) et le Status reason (Motif de statut) de la pile backend.
- Les valeurs de Status (Statut), Status reason (Motif de statut) et Logical ID (ID logique) des Events (Événements) récents de la pile backend.
- Les valeurs de Status (Statut), Status reason (Motif de statut) et Logical ID (ID logique) des Resources (Ressources) de la pile backend.
Remarque : la valeur de Status reason (Motif de statut) contient un message d'erreur renvoyé par CloudFormation qui identifie la cause de l'erreur.
Corrigez ensuite le problème en vous basant sur les valeurs de Status (Statut), Status reason (Motif de statut) et Logical ID (ID logique) répertoriées dans la console.
Solution
Remarque : les piles CloudFormation qu'Amplify alloue ou met à jour peuvent renvoyer des erreurs pour de nombreuses raisons. Voici les raisons les plus courantes pour lesquelles les piles CloudFormation renvoient des erreurs associées aux projets Amplify :
Identifiez ce qui cause le problème en examinant les codes de statut et les motifs de statut de la pile dans la console CloudFormation
1. Ouvrez la console Amplify.
2. Choisissez l'onglet Backend environments (Environnements backend). Choisissez ensuite l'environnement backend de votre application.
3. Choisissez l'onglet Overview (Présentation). Ensuite, choisissez View in CloudFormation (Afficher dans CloudFormation). La page Stack info (Informations sur la pile) de la pile CloudFormation associée à l'environnement backend s'ouvre dans la console CloudFormation.
4. Dans le Overview pane (panneau de présentation), examinez les valeurs de Status (Statut) et de Status reason (Motif de statut). Il s'agit du code de statut de la pile backend Status reason (Motif de statut).
Remarque : si le statut de la pile racine du projet est UPDATE_ROLLBACK_FAILED, suivez les instructions de cet article : Comment puis-je faire en sorte que ma pile CloudFormation se mette à jour si elle est bloquée dans l'état UPDATE_ROLLBACK_FAILED ?
5. Choisissez l'onglet Events (Événements). Examinez les valeurs de Status (Statut), Status reason (Motif de statut) et Logical ID (ID logique) de tous les événements récents qui sont dans un état d'échec.
Remarque : assurez-vous d'identifier tous les événements dont le statut est UPDATE_FAILED.
6. Choisissez l'onglet Resources (Ressources). Examinez les valeurs de Status (Statut), Status reason (Motif de statut) et Logical ID (ID logique) de toutes les ressources qui sont dans un état d'échec.
7. (Pour les piles imbriquées uniquement) Dans le panneau Resources (Ressources), recherchez les ressources de type AWS::CloudFormation::Stack. Examinez ensuite les valeurs de Status reason (Motif de statut) des piles imbriquées qui sont dans un état d'échec.
Important : lors de la résolution, ignorez les ressources qui ont échoué avec un statut Resource update cancelled (Mise à jour des ressources annulée). Ce statut signifie qu'une ressource dépendante, en aval, n'a pas échoué, mais n'a pas été mise à jour en raison de l'échec d'une autre ressource.
Corrigez le problème en vous basant sur les valeurs de Status (Statut), Status reason (Motif de statut) et Logical ID (ID logique) répertoriées dans la console
Suivez les instructions du Guide de résolution des problèmes d'Amplify CLI. Pour plus d'informations, vous pouvez également rechercher des motifs de statut spécifiques dans la page Amplify CLI Issues (Problèmes d'Amplify CLI) sur GitHub.
Remarque : une bonne pratique consiste à tester d'abord les solutions dans un environnement hors production.