【小ネタ】EC2インスタンスを再起動するたびにユーザーデータを実行してみる
EC2インスタンス起動時にユーザーデータを指定した場合、通常は初回起動時にのみ実行されます。しかし、設定を変更することにより再起動時も実行するようにできます。「EC2 インスタンスの初期起動後にユーザーデータを実行する」でやり方が紹介されていましたのでやってみました。
やってみる
指定の方法ですが、2 ~ 3行目のようにcloud-initディレクティブに設定を追加します。
#cloud-config cloud_final_modules: - [scripts-user, always] runcmd: - [ sh, -c, 'echo $(date) >> /tmp/testfile.txt' ]
初回起動時の結果
$ cat /tmp/testfile.txt Thu Oct 31 14:15:48 UTC 2019
再起動時の結果
$ cat /tmp/testfile.txt Thu Oct 31 14:15:48 UTC 2019 Thu Oct 31 14:21:10 UTC 2019
ユーザーデータが再起動でも実行されていることが確認できました。シェルスクリプトを再実行したい場合は、「cloud-initでシェルスクリプトとcloud-configを同時に使うを参考にMIMEマルチパート形式で記述できます。
まとめ
bootcmd
などを使用することで起動ごとにコマンドを実行できますが、ユーザーデータが実行されるタイミングであるscript-user
で再実行を行いたい場合などで使用できるかと思います。
どなたかの参考になれば幸いです。