Passer au contenu

Comment utiliser les données utilisateur pour exécuter automatiquement un script à chaque redémarrage de mon instance Amazon EC2 Linux ?

Lecture de 5 minute(s)
0

Je souhaite utiliser les données utilisateur pour exécuter un script chaque fois que mon instance Amazon Elastic Compute Cloud (Amazon EC2) redémarre.

Brève description

Par défaut, les commandes de données utilisateur et les directives cloud-init s'exécutent uniquement lors du premier cycle de démarrage au lancement d'une instance EC2. Pour remplacer cette configuration, utilisez un fichier MIME (Multipurpose Internet Mail Extensions) en plusieurs parties pour configurer vos commandes de données utilisateur et vos directives cloud-init. Pour plus d'informations, consultez la page Archive en plusieurs parties MIME sur le site Web de cloud-init. Ajoutez ensuite le fichier à votre instance.

Remarque : Vous pouvez consulter les données utilisateur de n'importe quelle instance. Toutefois, pour mettre à jour les données utilisateur de l'instance, vous devez arrêter votre instance.

Résolution

Configurer votre instance pour un arrêt et un démarrage

Remarque : Lorsque vous arrêtez et démarrez une instance, son adresse IP publique change. Une bonne pratique consiste à utiliser une adresse IP Elastic pour acheminer le trafic externe vers votre instance au lieu d'une adresse IP publique. Si vous utilisez Amazon Route 53, vous devrez peut-être mettre à jour les enregistrements DNS Route 53 lorsque l'adresse IP publique change. Un arrêt et un démarrage sont différents d'un redémarrage d'instance. Pour plus d'informations, consultez la section Fonctionnement de l'arrêt et du démarrage d'une instance EC2.

Avant d'arrêter et de démarrer votre instance, effectuez les opérations suivantes :

Configurer votre instance pour exécuter le script à chaque redémarrage

Procédez comme suit :

  1. Assurez-vous d'avoir installé la dernière version de cloud-init sur votre instance. Pour consulter la dernière version de cloud-init, consultez Versions canonical/cloud-init sur le site Web de GitHub.
  2. Vérifiez que la politique Gestion des identités et des accès AWS (AWS IAM) pour votre utilisateur ou votre rôle dispose de l'autorisation ec2:ModifyInstanceAttribute. Pour savoir comment modifier votre politique IAM, consultez la section Modifier les politiques IAM (console).
  3. Arrêtez votre instance.
  4. Ouvrez la console Amazon EC2.
  5. Choisissez Instances, puis choisissez votre instance.
  6. Choisissez Actions, puis sélectionnez Paramètres de l’instance.
  7. Choisissez Modifier les données utilisateur, puis entrez votre commande utilisateur sous la forme d'un fichier MIME en plusieurs parties :
    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #cloud-config
    cloud_final_modules:
    - [scripts-user, always]
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #!/bin/bash
    /bin/echo "Hello World" >> /tmp/testfile.txt
    --//--
    Remarque : Remplacez la section /bin/echo "Hello World" >> /tmp/testfile.txt par la commande shell que vous souhaitez exécuter au démarrage de l'instance. L'exemple de commande précédent écrit Hello World dans un fichier testfile.txt d'un répertoire /tmp. Avec un fichier MIME en plusieurs parties, vous pouvez ajouter simultanément plusieurs types de contenu aux données utilisateur. La commande précédente utilise à la fois les types de contenu text/cloud-config et text/x-shellscript. Définissez le paramètre scripts-user sur always afin que le type de contenu text/cloud-config remplace la fréquence d'exécution des données utilisateur dans le package cloud-init. Le type de contenu text/x-shellscript fournit la commande utilisateur permettant d'exécuter le module cloud-init cloud_final_modules.
  8. Sélectionnez Enregistrer.
  9. Démarrez votre instance, puis vérifiez que le script s'exécute.
    Remarque : Si le script ne s'est pas exécuté comme prévu, consultez le fichier /var/log/cloud-init-output.log pour obtenir des informations que vous pouvez utiliser pour déboguer votre script. Pour plus d'informations, consultez la page Comment déboguer cloud-init sur le site Web de cloud-init.

Informations connexes

Exécuter des commandes lorsque vous lancez une instance EC2 avec saisie de données utilisateur

Comment puis-je exécuter une commande sur une nouvelle instance Windows EC2 au lancement ?

Comment exécuter une commande sur une instance EC2 Windows existante lorsque je redémarre ou démarre l'instance ?

Formats de données utilisateur sur le site Web de cloud-init

AWS OFFICIELA mis à jour il y a 6 mois