EC2コマンドラインAPIを使用して新しいAWS EC2インスタンスを作成しているときに、一部のユーザーデータを新しいインスタンスに渡しています。
今、どうやってそのユーザーデータが実行されたかどうかを知るようになったのですか?
どうすれば確認できますか?
次の手順で確認できます
/var/log/cloud-init.log
および/var/log/cloud-init-output.log
ユーザーデータスクリプトのすべてのログを確認でき、/etc/cloud
フォルダ。
Amazon EC2 でのユーザーデータスクリプトのデバッグは、実際にはプロセスに積極的にフックする方法がないため、実際には少し扱いにくいため、理想的には Eric Hammondの記事 EC2インスタンスでのユーザーデータスクリプト出力のロギング に要約されているユーザーデータスクリプト出力への時間アクセス:
最近のUbuntu AMIは引き続きユーザーデータスクリプトをコンソール出力に送信するため、リモートで表示できますが、インスタンスのsyslogでは使用できません。コンソールの出力は、インスタンスが起動、再起動、または終了してから数分後にのみ更新されます。そのため、ユーザーデータスクリプトの出力が表示されるまで待機する必要があり、スナップショット後に出力される可能性のある出力をキャプチャしません。
設定によっては、ログを Loggly などのリモートロギングファシリティにすぐに送信することもできますが、これを十分に早期にインストールすると、明らかに鶏肉/卵の問題になる可能性があります(ただし、 AMIはたまたまそのように構成されています)。
ユーザーデータのログを有効にする
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
ステートメントの先頭で、2つの>>文字の間にスペースを入れてください。
例として、完全なユーザーデータスクリプトを次に示します。
#!/bin/bash -ex
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
echo BEGIN
date '+%Y-%m-%d %H:%M:%S'
echo END
ユーザーデータでec2の/ tmpディレクトリにファイルを作成し、機能するかどうかを確認します。
bob.txt:
#!/bin/sh
echo 'Woot!' > /home/ec2-user/user-script-output.txt
次に起動します:
ec2-run-instances -f bob.txt -t t1.micro -g ServerPolicy AMI-05cf5c6d -v