AWS CLIでユーザデータを指定する
-
run-instances
コマンドと--user-date
パラメータを使用する
aws ec2 run-instances \
--image-id ami-xxxxxxxx \
--count 1 \
--instance-type m3.medium \
--key-name xxxxxxxx \
--subnet-id xxxxxxxx \
--security-group-ids sg-xxxxxxxx \
--user-data file://xxxxxxxx.bash
- ユーザデータとして入力されたものはrootユーザとして実行されるので
sudo
コマンドは使わないこと -
-y
指定のないyum update
は指定できない(ユーザフィードバック:確認が必要となるコマンドは使えない) - AWS CLIを使用するには、インスタンス起動時にインスタンスプロファイルを使用する
(ユーザデータのスクリプトが必要とする認証情報が提供される) -
var/lib/cloud/instances/instance-id/
にコピーされて実行される
実行後にスクリプトは削除できないので、インスタンスからAMIを作る際は削除すること。
(補足)インスタンスメタデータ
- 実行中のインスタンス設定・インスタンス管理のために使われる
- ホスト名・イベント・セキュリティグループなどでカテゴリ分けされる
- 起動時に指定したユーザデータにアクセスできる
(補足)実行中のインスタンス内からユーザデータを取得する
IMDSのIPv4アドレス169.254.169.254
を使用する
http://169.254.169.254/latest/user-data
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/user-data
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
このあたりは、別の機会に調べてみることにします。