今回はEC2を毎回起動するたびに実行しなければいけないコマンドを自動で実行してくれるようにしていきます。
やり方としては、「AmazonLinuxのUserDataにシェルスクリプトかcloud-configで書き込んでいく」らしいです。そもそもUserDataとは、「Linux インスタンスの起動時に実行するコマンド」を指定できる項目のこと」です。(以下参照)
ユーザーデータはマネジメントコンソールから編集できます。(なぜか調べてもcli経由の記事ばかりだったけど)
停止中のインスタンスを選択 → アクション → インスタンスの設定 → ユーザーデータを編集
以下のような画面になる。「ユーザーデータをここに配置」のところにbashスクリプトを書いていけば、初回起動時のみ実行されるスクリプトになる。
ここにMIME-MULTIPART形式で書いていけば再起動するたびに実行されるスクリプトになる。
MIME-MULTIPART形式とは?
MIME TYPEのひとつで、application/gzipやtext/html、image/jpegなどのような、タイプ/サブタイプで決められた文書やファイルの形式の型を決めるやつらの仲間ということらしい。
multipart/form-data ← このように表す。
(multipart/form-dataは二重ダッシュ -
で始まる文字列によって区切られる)
以下のtextをユーザーデータ項目に貼り付ければ、再起動ごとに
/bin/echo "Hello World" >> /tmp/testfile.txt
が実行されるスクリプトになる。
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "Hello World" >> /tmp/testfile.txt
--//--
(以下参照)