Quero registrar em log a invocação de dados do usuário e enviá-la para os logs do console na minha instância de Linux do Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrição
Para solucionar problemas com sua instância do EC2, modifique seu script bash de user-data para redirecionar toda a saída para o console. Redirecione a saída para /var/log/user-data.log e /dev/console. Quando o script é executado, é possível visualizar os logs de invocação de user-data diretamente no console.
Observação: essa resolução é referente apenas ao Amazon Linux 1, Amazon Linux 2 e Amazon Linux 2023. Para obter informações sobre instâncias que executam o RHEL 7 ou o RHEL 8, consulte Como envio a saída de dados do usuário para os logs do console em uma instância EC2 executando RHEL 7 ou RHEL 8?
Resolução
Conclua as seguintes etapas:
-
Interrompa a instância.
-
Escolha Ações, escolha Configurações da instância e escolha Editar dados do usuário.
-
Adicione o script a seguir e escolha Salvar.
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!"
--//--
Observação: o script para redirecionar a saída de user-data começa com a linha #!/bin/bash -xe. O script anterior é composto por dados de configuração de cloud-init que executam um script shell toda vez que a instância é inicializada. Para informações, consulte Como posso utilizar dados do usuário para executar automaticamente um script em cada reinicialização de uma instância Linux do Amazon EC2? No comando anterior, a linha a seguir redireciona a saída de user-data:
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
Veja a seguir um exemplo de saída de console de uma instância do 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!
Observação: a saída publicada do log do sistema (console) não é atualizada continuamente. As instâncias criadas no sistema Nitro suportam a recuperação da última saída do console serial. Para mais informações, consulte Saída do console da instância.
Informações relacionadas
Executar comandos ao executar uma instância do EC2 com entrada de user-data