Amazon Linux や Amazon Linux 2 を実行している EC2 インスタンスのコンソールログにユーザーデータ出力を送信するにはどうすればよいですか?
最終更新日: 2021 年 2 月 4 日
Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスのブートストラップに関してトラブルシューティングを行おうとしています。ユーザーデータの呼び出しをログに記録し、コンソールに送信する方法を教えてください。
簡単な説明
SSH 経由でインスタンスにアクセスせずに EC2 インスタンスのブートストラップの問題をトラブルシューティングするには、すべての出力を /var/log/user-data.log と /dev/console の両方にリダイレクトするコードをユーザーデータ Bash スクリプトに追加します。コードが実行されると、コンソールにユーザーデータ呼び出しログが表示されます。
注意: この解決方法は、Amazon Linux および Amazon Linux 2 でのみ有効です。RHEL 7 または RHEL 8 を実行しているインスタンスに関しては、How can I log user-data for my EC2 instance running RHEL 7 or RHEL 8 and then ship it to the console logs? を参照してください。
解決方法
次のコマンドを入力して、ユーザデータ出力コンソールをリダイレクトします。
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
yum -y update
echo "Hello from user-data!"
以下の行で、ユーザーデータ出力をリダイレクトします。
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
次に、コンソール出力の例を示します。
<13>Nov 13 13:49:59 user-data: amazon-ssm-agent.x86_64 0:2.3.228.0-1.amzn2
<13>Nov 13 13:49:59 user-data: irqbalance.x86_64 2:1.5.0-2.amzn2.0.1
<13>Nov 13 13:49:59 user-data: kernel-tools.x86_64 0:4.14.77-80.57.amzn2
<13>Nov 13 13:49:59 user-data: kmod.x86_64 0:25-3.amzn2.0.2
<13>Nov 13 13:49:59 user-data: kmod-libs.x86_64 0:25-3.amzn2.0.2
<13>Nov 13 13:49:59 user-data: lz4.x86_64 0:1.7.5-2.amzn2.0.1
<13>Nov 13 13:49:59 user-data: nss.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: nss-sysinit.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: nss-tools.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: openssl.x86_64 1:1.0.2k-16.amzn2.0.1
<13>Nov 13 13:49:59 user-data: openssl-libs.x86_64 1:1.0.2k-16.amzn2.0.1
<13>Nov 13 13:49:59 user-data:
<13>Nov 13 13:49:59 user-data: Complete!
<13>Nov 13 13:49:59 user-data: + echo 'Hello from user-data!
注意: 投稿されたシステム (コンソール) ログ出力は、継続的には更新されません。Nitro システム上に構築されたインスタンスは、最新のシリアルコンソール出力の取得をサポートします。詳細については、「インスタンスコンソールの出力」を参照してください。