Skip to content

Comment puis-je envoyer la sortie des données utilisateur aux journaux de console d’une instance EC2 pour Amazon Linux 1, Amazon Linux 2 ou Amazon Linux 2023 ?

Lecture de 3 minute(s)
0

Je souhaite journaliser l’invocation des données utilisateur et les envoyer dans les journaux de la console sur mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

Pour résoudre les problèmes liés à votre instance EC2, modifiez votre script Bash de données utilisateur pour rediriger toutes les sorties vers la console. Redirigez la sortie vers /var/log/user-data.log et /dev/console. Lorsque le script s'exécute, vous pouvez consulter les journaux d'invocation des données utilisateur directement dans votre console.

Remarque : Cette résolution concerne uniquement Amazon Linux 1, Amazon Linux 2 et Amazon Linux 2023. Pour en savoir plus sur les instances exécutant RHEL 7 ou RHEL 8, consultez la section Comment puis-je envoyer les sorties de données utilisateur aux journaux de la console sur une instance EC2 exécutant RHEL 7 ou 8 ?

Résolution

Procédez comme suit :

  1. Arrêtez l’instance.

  2. Sélectionnez Actions, Paramètres de l’instance, puis Modifier les données utilisateur.

  3. Ajoutez le script suivant, puis sélectionnez Enregistrer.

    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="userdata.txt"
    
    #!/bin/bash -xe
    
    exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
    cat /etc/os-release | grep PRETTY_NAME
    echo "Hello from user-data!"
    
    --//--

    Remarque : Le script permettant de rediriger la sortie des données utilisateur commence par la ligne #!/bin/bash -xe. Le script précédent est constitué de données de configuration cloud-init qui exécutent un script Shell à chaque démarrage de l'instance. Pour en savoir plus, consultez la section Comment puis-je utiliser des données utilisateur pour exécuter automatiquement un script à chaque redémarrage de mon instance Linux Amazon EC2 ? Dans la commande précédente, la ligne suivante redirige la sortie des données utilisateur :

    exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1

    Voici un exemple de sortie de console provenant d'une instance Amazon Linux 2023 :

    <13>Aug 13 18:43:39 user-data: + cat /etc/os-release
    <13>Aug 13 18:43:39 user-data: + grep PRETTY_NAME
    <13>Aug 13 18:43:39 user-data: PRETTY_NAME="Amazon Linux 2023.5.20240805"
    <13>Aug 13 18:43:39 user-data: + echo 'Hello from user-data!'
    <13>Aug 13 18:43:39 user-data: Hello from user-data!

    Remarque : La sortie du journal système (console) publiée n’est pas mise à jour en permanence. Les instances basées sur le système Nitro permettent de récupérer la dernière sortie de la console de série. Pour en savoir plus, consultez la page Sortie de la console d’instance.

Informations connexes

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

AWS OFFICIELA mis à jour il y a un an