cloud-init
EC2が起動する際に、cloud-initを使って任意のスクリプトを実行させることが可能である。実行する際に渡すことのできるデータ(ユーザデータ)は、プレーンテキスト・ファイル・Base64エンコードされたテキストで、通常は初回起動時のみ実行されるため、再起動時などは実行されない。スクリプトは、シェルスクリプト形式もしくはcloud-initディレクティブ形式で記述することが可能である。なお、スクリプトは、インタラクティブに動作させることはできないことに注意が必要である。また、このスクリプトは、rootユーザとして実行される。
シェルスクリプトによる実行
シェルスクリプトを実行させるためには、通常のシェルスクリプト同様にインタプリタのパスを最初に記述する必要がある。
#!/bin/bash
その他の処理も、通常のシェルスクリプトと同様に記述することができる。
ユーザデータの登録
ユーザデータの登録は、AWSマネージメントコンソール上、もしくはAWS CLIから行うことが可能である。
AWSマネージメントコンソールから登録
AWSマネージドコンソールで行う場合は、インスタンス作成画面の中で、ユーザデータを登録できる。
また、登録したユーザデータは、「インスタンスの設定」より確認することが可能である。
実行中のインスタンスから値を取得することも可能である。
curl https://169.254.169.254/latest/user-data
AWS CLIから登録
AWS CLIからEC2を起動する際に、user-dataオプションを付与することで、ユーザデータを指定することができる。指定するファイルは、シェルスクリプトが記述された通常のテキストファイルでよい。
aws ec2 run-instances --cli-input-json file:///tmp/ec2_settings.json --user-data file:///tmp/cloud-init_userdata.txt