Résolution des problèmes CloudFormation - 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.

Résolution des problèmes CloudFormation

Lors de l'utilisation AWS CloudFormation, vous pouvez rencontrer des problèmes lors de la création, de la mise à jour ou de la suppression de CloudFormation piles. Les sections suivantes peuvent vous aider à résoudre les problèmes courants qui peuvent se poser.

Pour les questions d'ordre général CloudFormation, consultez les AWS CloudFormation FAQ. Vous pouvez également rechercher des réponses et publier des questions dans les forumsAWS CloudFormation.

Guide de dépannage

Si AWS CloudFormation vous ne parvenez pas à créer, mettre à jour ou supprimer votre pile, vous pouvez consulter les messages d'erreur ou les journaux pour en savoir plus sur le problème. Les tâches suivantes décrivent les méthodes générales de résolution d'un CloudFormation problème. Pour plus d'informations sur des erreurs spécifiques et les solutions, consultez Résolution des erreurs.

  • Utilisez la console CloudFormation pour consulter le statut de votre pile. Cette console vous permet de voir une liste des événements liés à une pile pendant que cette dernière est créée, mise à jour ou supprimée. Recherchez dans cette liste l'événement qui a échoué, puis consultez la raison du statut correspondant. La raison du statut peut contenir un message d'erreur provenant AWS CloudFormation ou provenant d'un service particulier qui peut vous aider à résoudre votre problème. Pour plus d'informations sur l'affichage des événements d'une pile, consultez Affichage des données et des ressources de la AWS CloudFormation pile sur AWS Management Console.

  • Pour les problèmes Amazon EC2, affichez les journaux cloud-init et cfn. Ces journaux sont publiés dans le répertoire /var/log/ de l'instance Amazon EC2. Ces journaux capturent les processus et les sorties de commandes lors AWS CloudFormation de la configuration de votre instance. Pour Windows, consultez le service EC2Configure dans %ProgramFiles%\Amazon\EC2ConfigService, EC2 Launch dans%ProgramData%\Amazon\EC2-Windows\Launch\Logs, EC2 Launch v2 dans %ProgramData%\Amazon\EC2Launch\log et les journaux cfn dans C:\cfn\log.

    Vous pouvez également configurer votre AWS CloudFormation modèle pour que les journaux soient publiés sur Amazon CloudWatch, qui affiche les journaux dans le AWS Management Console afin que vous n'ayez pas à vous connecter à votre instance Amazon EC2. Pour plus d'informations, consultez la section Afficher CloudFormation les journaux dans la console dans le blog de gestion des applications.

Résolution des erreurs

Lorsque vous rencontrez les erreurs suivantes dans votre AWS CloudFormation pile, vous pouvez utiliser les solutions suivantes pour vous aider à trouver la source des problèmes et à les résoudre.

Échec de la suppression de la pile

Pour résoudre ce problème, essayez la méthode suivante :

  • Certaines ressources doivent être vides avant de pouvoir être supprimées. Par exemple, vous devez supprimer tous les objets d'un compartiment Amazon S3 ou supprimer toutes les instances d'un groupe de sécurité Amazon EC2 avant de pouvoir supprimer ce compartiment ou ce groupe de sécurité.

  • Vérifiez que vous disposez des autorisations IAM nécessaires pour supprimer les ressources de la pile. Outre AWS CloudFormation les autorisations, vous devez être autorisé à utiliser les services sous-jacents, tels qu'Amazon S3 ou Amazon EC2.

  • Lorsque les piles sont dans l'DELETE_FAILEDétat où elles n'ont pas AWS CloudFormation pu supprimer une ressource, réexécutez la suppression avec le RetainResourcesparamètre et spécifiez la ressource qui ne AWS CloudFormation peut pas être supprimée. AWS CloudFormation supprime la pile sans supprimer la ressource conservée. La conservation des ressources s'avère utile lorsque vous ne pouvez pas supprimer une ressource, telle qu'un compartiment S3 qui contient les objets que vous souhaitez conserver, mais que vous voulez supprimer la pile.

    Après avoir supprimé la pile, vous pouvez supprimer manuellement les ressources conservées à l'aide du AWS service associé.

  • Vous ne pouvez pas supprimer des piles pour lesquelles la protection contre la résiliation est activée. Si vous essayez de supprimer une pile pour laquelle la protection contre la résiliation est activée, la suppression échoue et la pile, et son statut, restent inchangés. Désactivez la protection contre la résiliation sur la pile, puis effectuez à nouveau l'opération de suppression.

    Cela concerne également les piles imbriquées dont les piles racine sont protégées contre la résiliation. Désactivez la protection contre la résiliation sur la pile racine, puis effectuez à nouveau l'opération de suppression. Il est fortement recommandé de ne pas supprimer les piles imbriquées directement, mais de les supprimer uniquement dans le cadre de la suppression de la pile racine et de l'ensemble de ses ressources.

    Pour de plus amples informations, veuillez consulter Protection d'une pile contre la suppression.

  • Pour tous les autres problèmes, si vous en avez AWS Support, vous pouvez créer un AWS Support dossier. veuillez consulter Contacter l'assistance.

Erreur de dépendance

Pour résoudre une erreur de dépendance, ajoutez un attribut DependsOn aux ressources qui dépendent d'autres ressources dans votre modèle. Dans certains cas, vous devez déclarer explicitement les dépendances afin de AWS CloudFormation pouvoir créer ou supprimer des ressources dans le bon ordre. Par exemple, si vous créez une adresse IP Elastic et un VPC avec une passerelle Internet dans la même pile, l'adresse IP Elastic dépend de l'association à cette passerelle Internet. Pour plus d’informations, consultez Attribut DependsOn.

Erreur d'analyse d'un paramètre lors de la transmission d'une liste

Lorsque vous utilisez le AWS Command Line Interface ou AWS CloudFormation pour transmettre une liste, ajoutez le caractère d'échappement (\) avant chaque virgule. L'exemple suivant montre comment spécifier un paramètre d'entrée avec l' AWS CLI.

ParameterKey=CIDR,ParameterValue='10.10.0.0/16\,10.10.0.0/24\,10.10.1.0/24'

Autorisations IAM insuffisantes

Lorsque vous travaillez avec une AWS CloudFormation pile, vous avez non seulement besoin d'autorisations pour l'utiliser AWS CloudFormation, mais vous devez également avoir l'autorisation d'utiliser les services sous-jacents décrits dans votre modèle. Par exemple, si vous créez un compartiment Amazon S3 ou si vous lancez une instance Amazon EC2, vous devez être autorisé à accéder à Amazon S3 ou à Amazon EC2. Passez en revue votre politique IAM et vérifiez que vous disposez des autorisations nécessaires avant de travailler avec des AWS CloudFormation stacks. Pour plus d'informations, veuillez consulter Contrôler l'accès avec AWS Identity and Access Management.

Valeur non valide ou propriété de ressource non prise en charge

Lorsque vous créez ou mettez à jour une AWS CloudFormation pile, celle-ci peut échouer en raison de paramètres d'entrée non valides, de noms de propriétés de ressources non pris en charge ou de valeurs de propriétés de ressource non prises en charge. Pour les paramètres d'entrée, vérifiez que la ressource existe. Par exemple, lorsque vous spécifiez une paire de clés Amazon EC2 ou un ID de VPC, la ressource doit exister dans votre compte et dans la région dans laquelle vous créez ou mettez à jour la pile. Pour vous assurer que les valeurs sont valides, vous pouvez utiliser les types de paramètres spécifiques à AWS.

Pour les noms et les valeurs des propriétés de ressource, mettez à jour le modèle pour qu'il utilise des noms et des valeurs valides. Pour voir une liste de toutes les ressources et de leurs noms de propriété, consultez AWS référence aux types de ressources et de propriétés.

Quota dépassé

Vérifiez que vous n'avez pas atteint un quota de ressource. Par exemple, le nombre maximal d'instances à la demande Amazon EC2 que vous pouvez lancer par défaut est de 5. Si vous essayez de créer plus d'instances à la demande Amazon EC2 que le quota défini dans votre compte, l'opération échoue et vous recevez l'erreur Status=start_failed. Pour afficher les quotas AWS par défaut et par service, veuillez consulter la rubrique AWS service quotas dans Références générales AWS.

Pour les AWS CloudFormation quotas et les stratégies d'ajustement, voir. AWS CloudFormation quotas

De même, lors d'une mise à jour, si une ressource est remplacée, une nouvelle ressource est AWS CloudFormation créée avant de supprimer l'ancienne. Ce remplacement pourrait entraîner le dépassement du quota de ressources associé à votre compte, ce qui provoquerait l'échec de la mise à jour. Vous pouvez supprimer des ressources inutilisées ou demander une augmentation de quota.

Les piles imbriquées restent bloquées à l'état UPDATE_COMPLETE_CLEANUP_IN_PROGRESS, UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS ou UPDATE_ROLLBACK_IN_PROGRESS

La restauration d'une pile imbriquée a échoué. En raison des dépendances potentielles entre les piles imbriquées, le nettoyage des ressources des piles imbriquées AWS CloudFormation ne commence pas tant que toutes les piles imbriquées n'ont pas été mises à jour ou annulées. Lorsqu'une pile imbriquée ne parvient pas à revenir en arrière, toutes les opérations sont AWS CloudFormation annulées, quel que soit l'état dans lequel se trouvent les autres piles imbriquées. Une pile imbriquée qui a terminé la mise à jour ou la restauration mais qui n'a pas reçu de signal indiquant de AWS CloudFormation commencer le nettoyage car une autre pile imbriquée n'a pas réussi à revenir en arrière est dans un état UPDATE_COMPLETE_CLEANUP_IN_PROGRESS ouUPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS. Lorsqu'une pile imbriquée dont la mise a jour a échoué ne reçoit pas le signal pour commencer sa restauration, son état indique UPDATE_ROLLBACK_IN_PROGRESS.

Une pile imbriquée peut ne pas être annulée en raison de modifications apportées en dehors de AWS CloudFormation, lorsque le modèle de pile ne reflète pas exactement l'état de la pile. Une pile imbriquée peut également échouer si le délai d'expiration du signal pour son groupe Auto Scaling n'était pas suffisant lorsque ce dernier a été créé ou mis à jour.

Pour réparer la pile, contactez AWS Support.

Aucune mise à jour à effectuer

Pour mettre à jour une AWS CloudFormation pile, vous devez soumettre des modifications de modèle ou de valeur de paramètre à AWS CloudFormation. Toutefois, certaines modifications du modèle AWS CloudFormation ne seront pas reconnues comme des mises à jour, telles que les modifications apportées à une politique de suppression, à une politique de mise à jour, à une déclaration de condition ou à une déclaration de sortie. Si vous avez besoin d'effectuer uniquement ces modifications, vous pouvez ajouter ou modifier les attributs de métadonnées de vos ressources.

Pour plus d'informations sur la modification de modèles pendant une mise à jour, consultez la page Modification d'un modèle de pile.

La ressource n'a pas pu se stabiliser lors d'une opération de création, de mise à jour ou de suppression de pile

Une ressource n'a pas répondu car l'opération a dépassé le AWS CloudFormation délai imparti ou parce qu'un AWS service a été interrompu. En cas d'interruption de service, vérifiez que le AWS service concerné est en cours d'exécution, puis réessayez l'opération de pile.

Si les AWS services fonctionnent correctement, vérifiez si votre pile contient l'une des ressources suivantes :

  • AWS::AutoScaling::AutoScalingGroup pour les opérations de création, de mise à jour et de suppression

  • AWS::CertificateManager::Certificate pour les opérations de création

  • AWS::CloudFormation::Stack pour les opérations de création, de mise à jour et de suppression

  • AWS::ElasticSearch::Domain pour les opérations de mise à jour

  • AWS::RDS::DBCluster pour les opérations de création et de mise à jour

  • AWS::RDS::DBInstance pour les opérations de création, de mise à jour et de suppression

  • AWS::Redshift::Cluster pour les opérations de mise à jour

Pour ces ressources, les opérations peuvent prendre plus de temps que le délai d'expiration par défaut. Le délai d'expiration varie en fonction de la ressource et des informations d'identification que vous utilisez. Pour allonger le délai d'expiration, spécifiez un rôle de service au moment d'effectuer l'opération de pile. Si vous utilisez déjà un rôle de service ou si votre pile contient une ressource qui n'est pas répertoriée, contactez le AWS Support.

Si votre pile indique l'état UPDATE_ROLLBACK_FAILED, consultez Échec de la restauration de la mise à jour.

Le groupe de sécurité n'existe pas dans le VPC

Vérifiez que le groupe de sécurité se trouve dans le VPC que vous avez spécifié. Si tel est le cas, vérifiez que vous avez spécifié l'ID de groupe de sécurité, et pas le nom du groupe de sécurité. Par exemple, la ressource AWS::EC2::SecurityGroupIngress possède les propriétés SourceSecurityGroupName et SourceSecurityGroupId. Pour les groupes de sécurité d'un VPC, vous devez utiliser la propriété SourceSecurityGroupId et définir l'ID du groupe de sécurité.

Échec de la restauration de la mise à jour

Une ressource dépendante ne parvient pas à rétablir son état d'origine, ce qui entraîne l'échec de la restauration (état UPDATE_ROLLBACK_FAILED). Par exemple, la restauration a peut-être lieu dans une instance de base de données obsolète qui a été supprimée en dehors de AWS CloudFormation. Comme il AWS 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.

Selon l'origine du problème, vous pouvez corriger manuellement l'erreur et poursuivre la restauration. De cette façon, vous pourrez rétablir l'état de fonctionnement de la pile (état UPDATE_ROLLBACK_COMPLETE), puis réessayer de mettre à jour la pile. La liste suivante décrit les solutions à des erreurs courantes qui entraînent l'échec de restauration d'une mise à jour :

  • Le nombre de signaux requis n'a pas été reçu

    Utilisez la commande signal-resource pour envoyer manuellement le nombre de signaux de réussite requis à la ressource qui les attend, puis poursuivez la restauration de la mise à jour. Par exemple, pendant la restauration d'une mise à jour, les instances d'un groupe Auto Scaling ne parviennent pas toujours à signaler la réussite dans le délai spécifié. Dans ce cas, envoyez manuellement les signaux de réussite à ce groupe Auto Scaling. Lorsque vous poursuivez l'annulation de la mise à jour AWS CloudFormation , elle reçoit vos signaux et procède à la restauration.

  • Les modifications apportées à une ressource ont été effectuées en dehors de AWS CloudFormation

    Synchronisez manuellement les ressources pour qu'elles correspondent au modèle de la pile d'origine, puis poursuivez la restauration de la mise à jour. Par exemple, si vous avez supprimé manuellement une ressource à laquelle AWS CloudFormation vous tentez de revenir, vous devez créer manuellement cette ressource avec le même nom et les mêmes propriétés que dans la pile d'origine.

  • Autorisations insuffisantes

    Vérifiez que vous disposez des autorisations IAM suffisantes pour modifier des ressources, puis poursuivez la restauration de la mise à jour. Par exemple, votre politique IAM peut vous permettre de créer un compartiment S3, mais pas de le modifier. Ajoutez les actions de modification à votre politique.

  • Jeton de sécurité non valide

    AWS CloudFormation nécessite un nouveau jeu d'informations d'identification. Aucune modification n'est requise. Continuez à restaurer la mise à jour, ce qui actualisera les informations d'identification.

  • Erreur de limitation

    Supprimez les ressources dont vous n'avez pas besoin ou demandez une augmentation de quota, puis poursuivez la restauration de la mise à jour. Par exemple, si le quota du nombre d'instances à la demande EC2 s'élève à 5 pour votre compte et si la restauration de la mise à jour dépasse cette valeur, elle échouera.

  • La ressource ne s'est pas stabilisée

    Une ressource n'a pas répondu car l'opération a peut-être dépassé le AWS CloudFormation délai d'expiration ou parce qu'un AWS service a peut-être été interrompu. Aucune modification n'est requise. Une fois que l'opération sur la ressource est terminée ou que le AWS service est de nouveau opérationnel, continuez à annuler la mise à jour.

Pour continuer à annuler une mise à jour, vous pouvez utiliser la AWS CloudFormation console ou l'interface de ligne de AWS commande (AWS CLI). Pour de plus amples informations, veuillez consulter Poursuite de la restauration d'une mise à jour.

Si aucune de ces solutions ne fonctionne, vous pouvez ignorer les ressources qui ne AWS CloudFormation peuvent pas être restaurées avec succès. Pour plus d'informations, consultez le ResourcesToSkip paramètre de fonctionnement de l'ContinueUpdateRollbackAPI dans le Guide de référence desAWS CloudFormation API. AWS 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 modifier les ressources ou mettre à jour la pile 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 votre pile sera irrécupérable.

La condition d'attente n'a pas reçu le nombre de signaux requis à partir d'une instance Amazon EC2

Pour résoudre ce problème, essayez la méthode suivante :

  • Assurez-vous que les scripts d' AWS CloudFormation assistance sont installés sur l'AMI que vous utilisez. Si l'AMI n'inclut pas les scripts d'assistant, vous pouvez également les télécharger dans votre instance. Pour de plus amples informations, veuillez consulter Référence des scripts d'assistant CloudFormation.

  • Vérifiez que la commande cfn-signal a été correctement exécutée au niveau de l'instance. Vous pouvez consulter des journaux, comme /var/log/cloud-init.log ou /var/log/cfn-init.log, afin de vous aider à déboguer le lancement de l'instance. Vous pouvez récupérer les journaux en vous connectant à votre instance, mais vous devez désactiver le rollback en cas d'échec, sinon AWS CloudFormation supprimer l'instance une fois que votre pile n'est pas créée. Vous pouvez également publier les journaux sur Amazon CloudWatch. Pour Windows, vous pouvez consulter les journaux cfn dans C:\cfn\log et les journaux du service EC2Config dans %ProgramFiles%\Amazon\EC2ConfigService.

  • Vérifiez que l'instance est connectée à Internet. Si l'instance se trouve dans un VPC, elle doit être pouvoir se connecter à Internet via un périphérique NAT (si elle se trouve dans un sous-réseau privé) ou via une passerelle Internet (s'il s'agit d'un sous-réseau public). Pour tester la connexion Internet de l'instance, essayez d'accéder à une page web publique, tel que http://aws.amazon.com. Par exemple, vous pouvez exécuter la commande suivante au niveau de l'instance. Elle doit retourner un code d'état HTTP 200.

    curl -I https://aws.amazon.com

    Pour obtenir des informations sur la configuration d'un périphérique NAT, consultez NAT dans le Amazon VPC Guide de l'utilisateur.

Ressource retirée de la pile mais non supprimée

Lors d'une mise à jour de pile, CloudFormation a supprimé une ressource d'une pile mais ne l'a pas supprimée. La ressource existe toujours mais n'est plus accessible via CloudFormation. Cela peut se produire lors des mises à jour de pile où :

  • CloudFormation doit remplacer une ressource existante. Il crée donc d'abord une nouvelle ressource, puis tente de supprimer l'ancienne ressource.

  • Vous avez retiré la ressource du modèle de pile, de sorte que CloudFormation tente de supprimer la ressource de la pile.

Cependant, il peut arriver que CloudFormation vous ne puissiez pas supprimer la ressource. Par exemple, si l'utilisateur ne dispose pas des autorisations nécessaires pour supprimer une ressource d'un type donné.

CloudFormation tente de supprimer l'ancienne ressource à trois reprises. S'il n'est pas CloudFormation possible de supprimer l'ancienne ressource, elle est supprimée de la pile et continue de mettre à jour la pile. Lorsque la mise à jour de la pile est terminée, CloudFormation un événement de UPDATE_COMPLETE pile est émis, mais inclut un événement indiquant StatusReason qu'une ou plusieurs ressources n'ont pas pu être supprimées. CloudFormation émet également un DELETE_FAILED événement pour la ressource spécifique, avec un correspondant StatusReason fournissant plus de détails sur les raisons de l' CloudFormation échec de la suppression de la ressource.

Pour résoudre ce problème, supprimez la ressource directement à l'aide de la console ou de l'API pour le service sous-jacent.

Contacter l'assistance

Si c'est le cas AWS Support, vous pouvez créer un dossier de support technique sur https://console.aws.amazon.com/support/home#/. Avant de contacter l'assistance, collectez les informations suivantes :

  • ID de la pile. Vous trouverez l'ID de la pile dans l'onglet Présentation de la consoleAWS CloudFormation. Pour de plus amples informations, veuillez consulter Affichage des données et des ressources de la AWS CloudFormation pile sur AWS Management Console.

    Important

    N'apportez pas de modifications à la pile en dehors de AWS CloudFormation. Apporter des modifications à votre pile en dehors de AWS CloudFormation celle-ci peut la mettre dans un état irrécupérable.

  • Messages d'erreur associés à la pile. Pour découvrir comment accéder aux messages d'erreur de la pile, consultez Guide de dépannage.

  • Pour les problèmes Amazon EC2, collectez les journaux cloud-init et cfn. Ces journaux sont publiés dans le répertoire /var/log/ de l'instance Amazon EC2. Ces journaux capturent les processus et les sorties de commande lors de la configuration de l'instance. Pour Windows, regroupez les journaux du service EC2Configure et les journaux cfn dans %ProgramFiles%\Amazon\EC2ConfigService et C:\cfn\log.

Vous pouvez également rechercher des réponses et publier des questions dans les forumsAWS CloudFormation.