Comment résoudre les problèmes liés à l'inclusion de métadonnées dans une instance EC2 dans CloudFormation ?

Lecture de 4 minute(s)
0

J'ai utilisé AWS::CloudFormation::Init dans AWS CloudFormation pour inclure des métadonnées dans une instance Amazon Elastic Cloud Compute (Amazon EC2). Cependant, les changements n’apparaissent pas dans l'instance.

Résolution

Prérequis : définissez l'option Restauration en cas d'échec pour votre pile CloudFormation sur Non.

Si vous avez défini Restauration en cas d'échec sur Non et que vous ne parvenez toujours pas à inclure des métadonnées dans l'instance EC2, prenez les mesures suivantes.

Remarque : les étapes de résolution présentées ci-dessous concernent les piles CloudFormation créées avec une instance Linux.

Vérification de l’installation du script d'assistance cfn-init

Pour confirmer que vous avez bien installé le script cfn-init sur l'instance configurée pour envoyer des signaux aux ressources CloudFormation, procédez comme suit :

  1. Utilisez le protocole SSH pour vous connecter à l'instance.
  2. Vérifiez que le script cfn-init ou le package aws-cfn-bootstrap est bien installé dans votre répertoire.
    Pour confirmer la présence du script cfn-init, exécutez la commande suivante :
    sudo find / -name cfn-init/opt/aws/bin/cfn-init
    /opt/aws/apitools/cfn-init
    /opt/aws/apitools/cfn-init-1.4-34.24.amzn1/bin/cfn-init
    /var/lib/cfn-init
    Pour confirmer la présence du package aws-cfn-bootstrap, exécutez la commande suivante :
    sudo rpm -q aws-cfn-bootstrapaws-cfn-bootstrap-1.4-34.24.amzn1.noarch
    Remarque : la commande présentée ci-dessus fonctionne uniquement sur les distributions qui utilisent le gestionnaire de packages RPM.

Les scripts d'assistance CloudFormation sont installés sur l’Amazon Machine Image (AMI) Amazon Linux par défaut.

Vérification de la connexion Internet de l'instance

Si l'instance se trouve dans un Amazon Virtual Private Cloud (Amazon VPC), elle peut être connectée à Internet grâce aux méthodes suivantes :

  • Un périphérique NAT dans un sous-réseau privé
  • Une passerelle Internet dans un sous-réseau public

Pour tester la connexion Internet de l'instance, ouvrez une page Web publique, telle que la page d'accueil d’AWS. Exécutez ensuite une commande curl sur l'instance. Exemple :

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

Si l'instance est connectée à Internet, la commande renvoie un code de statut HTTP 200.

Si vous utilisez un point de terminaison d’un VPC d'interface, celui-ci doit se trouver dans la même région AWS que l'instance. En outre, le groupe de sécurité attaché au point de terminaison de l'interface doit autoriser les connexions entrantes sur le port 443 depuis le sous-réseau privé d'Amazon VPC.

Détection d’erreurs dans les journaux cloud-init ou cfn-init

Pour détecter des erreurs de syntaxe ou des valeurs incorrectes dans les journaux cloud-init ou cfn-init, procédez comme suit :

  1. Utilisez le protocole SSH pour vous connecter à votre instance.
  2. Pour trouver des messages d'erreur détaillés, recherchez les mots clés error ou failure dans les journaux suivants :
    /var/log/cloud-init-output.log
    /var/log/cloud-init.log
    /var/log/cfn-init.log
    /var/log/cfn-init-cmd.log
    Pour trouver tous les enregistrements comprenant les mots error ou failure dans les fichiers /var/log/cfn ou /var/log/cloud-init, exécutez la commande suivante :
    grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)
    Remarque : la commande présentée ci-dessus renvoie le nom du fichier, le numéro de ligne et le message d'erreur.
  3. Utilisez le message d'erreur détaillé pour corriger les erreurs, puis mettez à jour la pile.

Si le fichier cfn-init.log n'existe pas, cela signifie que le modèle CloudFormation n'a pas exécuté le script cfn-init.

Pour vérifier que la propriété UserData est configurée pour exécuter le script cfn-init, procédez comme suit :

  1. Dans un éditeur de code, ouvrez le modèle CloudFormation de votre pile.
  2. Sous UserData, détectez les erreurs de syntaxe, les espaces manquants, les fautes d'orthographe et autres fautes de frappe.
  3. Vérifiez que les valeurs des propriétés de pile, de ressource et de région sont correctes.
  4. Pour la fonction intrinsèque Fn::Join de la propriété UserData, utilisez -v pour exécuter le script cfn-init en mode détaillé. Pour obtenir des exemples de sorties, consultez la page Exemple.

Informations connexes

Considérations relatives aux points de terminaison d’un VPC CloudFormation

AWS::CloudFormation::Init

Comment résoudre l'erreur « Failed to receive X resource signal(s) within the specified duration » dans AWS CloudFormation ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois