web-dev-qa-db-ja.com

EC2インスタンスに渡されるユーザーデータが機能しているかどうかを確認するにはどうすればよいですか?

EC2コマンドラインAPIを使用して新しいAWS EC2インスタンスを作成しているときに、一部のユーザーデータを新しいインスタンスに渡しています。

今、どうやってそのユーザーデータが実行されたかどうかを知るようになったのですか?

どうすれば確認できますか?

33
Pravin

次の手順で確認できます

  1. EC2インスタンスの起動時にSSH
  2. でユーザーデータスクリプトのログを確認してください。
    • /var/log/cloud-init.logおよび
    • /var/log/cloud-init-output.log

ユーザーデータスクリプトのすべてのログを確認でき、/etc/cloudフォルダ。

25
Ravi Prajapati

参考までに、EC2コンソールからシステムログを見て、ユーザーデータが実行されたかどうかを確認できます。インスタンスを右クリック-インスタンス設定-システムログの取得

enter image description here

これにより、システムログを含むモーダルウィンドウが開きます。

enter image description here

14
jetpackdata.com

Amazon EC2 でのユーザーデータスクリプトのデバッグは、実際にはプロセスに積極的にフックする方法がないため、実際には少し扱いに​​くいため、理想的には Eric Hammondの記事 EC2インスタンスでのユーザーデータスクリプト出力のロギング に要約されているユーザーデータスクリプト出力への時間アクセス

最近のUbuntu AMIは引き続きユーザーデータスクリプトをコンソール出力に送信するため、リモートで表示できますが、インスタンスのsyslogでは使用できません。コンソールの出力は、インスタンスが起動、再起動、または終了してから数分後にのみ更新されます。そのため、ユーザーデータスクリプトの出力が表示されるまで待機する必要があり、スナップショット後に出力される可能性のある出力をキャプチャしません。

設定によっては、ログを Loggly などのリモートロギングファシリティにすぐに送信することもできますが、これを十分に早期にインストールすると、明らかに鶏肉/卵の問題になる可能性があります(ただし、 AMIはたまたまそのように構成されています)。

3
Steffen Opel

ユーザーデータのログを有効にする

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

2
utkarsh-devops

ユーザーデータで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

0
Mauvis Ledford