ユーザーデータとは?
EC2が初回に実行するスクリプトの事で実行権限はroot権限になります。
用途
初回起動時に特定の目的を達成したい場合に使われます。
例
1 |
yum update |
どこで設定できるか?
EC2作成時に「高度な詳細」の中で設定することが可能です。
記述形式
下記のいずれかから選ぶことが可能です。
- シェルスクリプト形式
- cloud-init形式
シェルスクリプト形式
1行目は「#!/bin/bash」から始まります。
1 2 3 4 |
#!/bin/bash yum update -y amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2 yum install -y httpd mariadb-server |
cloud-init形式
1行目は「#cloud-config」から始まります。
1 2 3 4 5 6 7 8 9 10 11 12 |
#cloud-config repo_update: true repo_upgrade: all packages: - httpd - mariadb-server runcmd: - [ sh, -c, "amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2" ] - systemctl start httpd - sudo systemctl enable httpd |
実行ログ
なお、下記の場所にユーザーデータで実行したスクリプトのログが出力されています。
1 |
/var/log/cloud-init-output.log |
インスタンスメタデータ
インスタンスの中に埋め込まれたデータ
例
- EC2のIPアドレス
- EC2のホストネーム
- EC2が利用しているAMIのID番号
コマンド
下記コマンドでEC2メタデータを取得することができます。
1 |
ec2-metadata -オプション |
また、curlコマンドで取得することも可能だったりします。
「ec2-metadataコマンド」と「curlコマンド」の使い分け
ec2-metadataコマンドは簡潔ですが、取得結果に余計な文字列も入ってきてしまいます。目視確認するときのみ使うようにしましょう。curlコマンドは取得結果が簡潔なのでプログラムでそのままデータ処理したい場合等に使うようにしましょう。例えば、上記でご紹介させていただいたユーザーデータでホスト名を設定するという処理でホスト名をcurlで取得して設定するというようなこともしたりします。
なお、ec2-metadataコマンドはAmazon Linuxではデフォルトでインストールされていますが、その他のOSの場合はクラウドユーティルズというソフトウェアをインストールする必要があるので注意です。
この記事へのコメントはありません。