Desidero registrare l'invocazione dei dati utente e inviarla ai log della console sulla mia istanza Linux Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrizione
Per risolvere i problemi con la tua istanza EC2, modifica lo script bash dei dati utente per reindirizzare tutto l'output alla console. Reindirizza l'output sia a /var/log/user-data.log che a /dev/console. Quando lo script viene eseguito, puoi visualizzare i log di invocazione dei dati utente direttamente nella console.
Nota: questa risoluzione è valida solo per Amazon Linux 1, Amazon Linux 2 e Amazon Linux 2023. Per informazioni sulle istanze che eseguono RHEL 7 o RHEL 8, consulta How can I send user-data output to the console logs on an EC2 instance that’s running RHEL? (Come posso inviare l'output dei dati utente ai log della console su un'istanza EC2 che esegue RHEL 7 o RHEL 8?)
Risoluzione
Completa i seguenti passaggi:
-
Arresta l'istanza.
-
Scegli Operazioni, quindi Impostazioni istanza, infine scegli Modifica dati utente.
-
Aggiungi il seguente script, quindi scegli Salva.
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!"
--//--
Nota: lo script per reindirizzare l'output dei dati utente inizia con la riga #!/bin/bash -xe. Lo script precedente è costituito da dati di configurazione cloud-init che eseguono uno script di shell ogni volta che l'istanza viene avviata. Per ulteriori informazioni, consulta Come posso utilizzare i dati utente per eseguire automaticamente uno script a ogni riavvio della mia istanza Linux Amazon EC2?Nel comando precedente, la riga seguente reindirizza l'output dei dati utente:
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
Di seguito è riportato un esempio di output della console da un'istanza 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!
Nota: l'output del log di sistema (console) pubblicato non viene aggiornato continuamente. Le istanze basate sul sistema Nitro supportano il recupero dell'ultimo output della console seriale. Per ulteriori informazioni, consulta la sezione Output della console delle istanze.
Informazioni correlate
Esegui comandi all'avvio di un'istanza EC2 con input di dati utente