この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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
で再実行を行いたい場合などで使用できるかと思います。
どなたかの参考になれば幸いです。