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.
Résolution des problèmes AWS CloudFormation StackSets
Cette rubrique présente certains AWS CloudFormation StackSets problèmes courants et propose des solutions à ces problèmes.
Rubriques
Raisons les plus courantes de l'échec de l'opération de pile
Problème : Une opération de pile a échoué et l'instance de pile a le statut OUTDATED
.
Cause : Plusieurs causes courantes sont associées à l'échec d'une opération de pile.
-
Autorisations insuffisantes dans un compte de destination pour la création des ressources spécifiées dans votre modèle.
-
Le AWS CloudFormation modèle peut contenir des erreurs. Validez le modèle AWS CloudFormation et corrigez les erreurs avant d'essayer de créer votre stack set.
-
Le modèle effectue peut-être une tentative de création de ressources globales qui doivent être uniques et qui ne le sont, par exemple des compartiments S3.
-
Un numéro de compte de destination spécifié n'existe pas. Vérifiez les numéros de compte de destination que vous avez spécifiés sur la page Set deployment options (Définir les options de déploiement) de l'assistant.
-
Le compte d'administrateur de compte n'a pas de relation d'approbation avec le compte de destination.
-
Le nombre maximal d'une ressource spécifiée dans votre modèle est déjà atteint dans votre compte de destination. Par exemple, vous avez peut-être atteint la limite des IAM rôles autorisés dans un compte cible, mais le modèle crée davantage de IAM rôles.
-
Vous avez atteint le nombre maximal de piles autorisé dans un ensemble de piles. Consultez Limites AWS CloudFormation pour connaître le nombre maximal de piles par ensemble de piles.
Solution : Pour plus d'informations sur les autorisations requises pour les comptes de destination et d'administrateur avant de pouvoir créer des ensembles de piles, consultez Donnez à tous les utilisateurs du compte administrateur les autorisations nécessaires pour gérer les piles dans tous les comptes cibles.
Nouvelle tentative non réussie de création ou mise à jour de pile
Problème : Une création ou mise à jour de pile a échoué, et l'instance de pile a le statut OUTDATED
. Pour résoudre les problèmes liés à l'échec de la création ou de la mise à jour d'une pile, ouvrez la AWS CloudFormation console et consultez les événements de la pile, dont le statut sera DELETED
(en cas d'échec des opérations de création) ou FAILED
(en cas d'échec des opérations de mise à jour). Dans les événements de la pile, recherchez la colonne Motif du statut. La valeur de Motif du statut explique pourquoi l'opération de pile a échoué.
Une fois que vous éliminé la cause sous-jacente de l'échec de la création de la pile et que vous êtes prêt à réessayer de créer la pile, effectuez les étapes suivantes.
Solution : Effectuez les étapes suivantes pour recommencer votre opération de pile.
-
Dans la console, sélectionnez l'ensemble de piles qui contient la pile sur laquelle l'opération a échoué.
-
Dans le menu Actions, choisissez Modifier les StackSet détails pour réessayer de créer ou de mettre à jour des piles.
-
Sur la page Specify template (Spécifier un modèle), pour utiliser le même modèle AWS CloudFormation , conservez l'option par défaut, Utiliser modèle en cours. Si votre opération de pile a échoué car le modèle nécessitait des modifications, et que vous souhaitez charger un modèle révisé, choisissez Upload a template to Amazon S3 (Télécharger un modèle sur Amazon S3) à la place, puis Browse (Parcourir) pour sélectionner votre modèle mis à jour. Lorsque vous avez fini de charger votre modèle révisé, cliquez sur Next (Suivant).
-
Sur la page Spécifier les détails de la pile, si vous ne modifiez aucun paramètre spécifique à votre modèle, choisissez Next.
-
Sur la page Set deployment options (Définir les options de déploiement), modifiez les valeurs par défaut de Maximum concurrent accounts (Nombre maximal de comptes en parallèle) et Failure tolerance (Tolérance aux pannes) si vous le souhaitez. Pour plus d’informations sur ces paramètres, consultez la page Options d'opération d'ensemble de piles.
-
Sur la page Révision, passez en revue vos sélections et cochez la case pour confirmer les IAM fonctionnalités requises. Sélectionnez Envoyer.
-
Si votre pile n'est pas mise à jour avec succès, répétez cette procédure après avoir résolu les problèmes sous-jacents qui empêchent la création de la pile.
Echec de la suppression de l'instance de pile
Problème : échec de la suppression d'une pile.
Cause : la suppression échoue pour n'importe quelle pile dont la protection contre la résiliation a été activée.
Solution : déterminez si la protection contre la résiliation a été activée pour la pile. Si c'est le cas, désactivez la protection contre la résiliation, puis effectuez à nouveau l'opération de suppression de l'instance de pile.
L'opération d'importation de pile échoue
Problème : une opération d'importation de pile ne permet pas d'importer des piles existantes dans des ensembles de piles nouveaux ou existants. L'instance de pile se trouve à l'état INOPERABLE
.
Solution : annulez l'opération d'importation de pile en procédant comme suit.
-
Utilisez l' StackSetsoption Supprimer les piles de votre ensemble de piles et RetainStacksactivez-la lors de la configuration, puis supprimez les instances de pile de votre ensemble de piles. Pour plus d'informations, pour plus d'informations, voirSupprimer des instances de pile de CloudFormation StackSets .
-
Vous verrez que l'instance de pile du Stackset est mise à jour pour supprimer l'instance de pile
INOPERABLE
. -
Corrigez les instances de pile en fonction de l'erreur d'échec de l'importation et recommencez l'opération d'importation de la pile.
Nombre de défaillances des instances de Stack pour les StackSets opérations
Le nombre d'instances de pile défaillantes vous avertit en cas d'échec de la mise en service ou la mise à jour des instances de pile. Ces instances de pile n'ont pas été déployées pour une ou plusieurs des raisons suivantes :
-
Ressource(s) existante(s) dotée(s) d'une configuration similaire
-
Dépendances manquantes, telles que les rôles AWS Identity and Access Management (IAM)
-
Autres facteurs de conflit
Si vous souhaitez effectuer un déploiement avec une simultanéité maximale, la valeur maximale de simultanéité est, au maximum, supérieure d'une unité à la valeur de tolérance aux pannes. Par exemple, si la valeur de tolérance aux pannes est de 9, la valeur maximale de simultanéité ne peut pas être supérieure à 10. Ainsi l'opération renvoie SUCCEEDED
même si certaines instances de pile ne sont pas mises à jour. Le nouveau nombre d'instances de pile défaillantes vous permet de déterminer si l'opération n'a abouti que de manière conditionnelle parce que la valeur de tolérances aux pannes est définie pour autoriser toutes les défaillances.
Vous pouvez utiliser le AWS Management Console AWS SDK, ou AWS CLI pour obtenir le nombre d'échecs et filtrer les instances de pile afin de déterminer quelles instances doivent être redéployées.
Utilisation de la console
Pour afficher le nombre d'instances de pile défaillantes :
-
Ouvrez la AWS CloudFormation console
et choisissez StackSets. -
Choisissez votre StackSet, puis cliquez sur l'onglet Opérations.
-
Sélectionnez un état dans la colonne Status (État) pour afficher les détails relatifs à l'état. Vous trouverez le nombre d'instances de pile défaillantes d'une opération particulière dans les détails relatifs à l'état.
Pour consulter le nombre, la région et l'état des instances de pile associées à l'opération :
-
Dans les détails relatifs à l'état, sélectionnez le nombre d'instances de pile défaillantes. Exemple : Instances de pile :
<number of failed stack instances>
. -
Développez le panneau latéral en sélectionnant l'en-tête de celui-ci. Les résultats affichés dans le panneau latéral indiquent l'état des instances de pile une fois l'opération sélectionnée terminée.
Pour afficher les détails de l'instance de pile actuelle d'une opération :
-
Sélectionnez l'onglet Stack Instances (Instances de pile).
-
Utilisez le filtre suivant : Last operation ID (ID de la dernière opération). Les résultats indiquent l'état actuel et le motif de cet état depuis la dernière opération de modification de l'instance. Vous pouvez utiliser ce filtre en association avec compte AWS , Région AWS , État détaillé et État de l'écart pour affiner les résultats de votre recherche.
À l'aide du AWS CLI
Pour connaître le nombre d'instances de pile défaillantes, appelez describe-stack-set-operation
ou list-stack-set-operations
et consultez StatusDetails
.
$
aws cloudformation describe-stack-set-operation --stack-set-name ss1 \ --operation-id 5550e62f-c822-4331-88fa-21c1d7bafc60
{ "StackSetOperation": { "OperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60", "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Action": "CREATE", "Status": "SUCCEEDED", "OperationPreferences": { "RegionOrder": [], "FailureToleranceCount": 10, "MaxConcurrentCount": 10 }, "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "CreationTimestamp": "2022-10-26T17:18:53.947000+00:00", "EndTimestamp": "2022-10-26T17:19:35.304000+00:00", "StatusDetails": { "FailedStackInstancesCount": 3 } } }
aws cloudformation list-stack-set-operations --stack-set-name ss1
{ "Summaries": [ { "OperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60", "Action": "CREATE", "Status": "SUCCEEDED", "CreationTimestamp": "2022-10-26T17:18:53.947000+00:00", "EndTimestamp": "2022-10-26T17:19:35.304000+00:00", "StatusDetails": { "FailedStackInstancesCount": 3 }, "OperationPreferences": { "RegionOrder": [], "FailureToleranceCount": 10, "MaxConcurrentCount": 10 } } ] }
Pour obtenir un aperçu de l'historique d'une opération particulière, utilisez list-stack-set-operation-results
afin d'afficher l'état et le motif de l'état de chaque instance de pile au terme de l'opération. Consultez l'exemple suivant pour trouver l'état (Status
) et le motif de l'état (StatusReason
) :
aws cloudformation list-stack-set-operation-results --stack-set-name ss1 --operation-id 5550e62f-c822-4331-88fa-21c1d7bafc60 --filters Name=OPERATION_RESULT_STATUS,Values=FAILED
{ "Summaries": [ { "Account": "123456789012", "Region": "us-west-2", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" }, { "Account": "123456789012", "Region": "us-west-1", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" }, { "Account": "123456789012", "Region": "us-east-1", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" } ] }
Utilisez list-stack-instances
avec les filtres DETAILED_STATUS
et LAST_OPERATION_ID
pour obtenir la liste des instances de pile qui ont échoué lors de la dernière opération au cours de laquelle un déploiement de celles-ci a été tenté. Voir l'indicateur --filters
dans l'exemple comportant DETAILED_STATUS
et LAST_OPERATION_ID
:
aws cloudformation list-stack-instances --stack-set-name ss1 --filters Name=DETAILED_STATUS,Values=FAILED Name=LAST_OPERATION_ID,Values=5550e62f-c822-4331-88fa-21c1d7bafc60
{ "Summaries": [ { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-east-1", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" }, { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-1", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" }, { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-2", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" } ] }
Pour trouver l'ID de la dernière opération afin de modifier une instance de pile, utilisez list-stack-instances
ou describe-stack-instance
de manière à obtenir LastOperationId
:
aws cloudformation describe-stack-instance --stack-set-name ss1 --stack-instance-account 123456789012 --stack-instance-region us-east-2
{ "StackInstance": { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-2", "Account": "123456789012", "ParameterOverrides": [], "Status": "OUTDATED", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" } }