【小ネタ】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で再実行を行いたい場合などで使用できるかと思います。

どなたかの参考になれば幸いです。

参考情報

EC2 インスタンスの初期起動後にユーザーデータを実行する