モチベーション
- Amazon EC2 (AWS) で高価なインスタンスを実験などのために一時的に使いたい場合がある
- 終了 (termination,インスタンスを破棄すること) し忘れると高額な利用料金が発生してしまう
解決法
- あらかじめ,利用したいインスタンスタイプなどを指定したテンプレートを作成する
- テンプレートで,cloud-init の設定を利用して一定時間でシステム終了するように設定しておく
- テンプレートの shutdown behavior を Terminate にしておくとシステム終了すると自動で Terminate される
手順
- EC2 Launch Template を作成する画面を開く
- インスタンスタイプやネットワークなど必要な設定をする
- "Advanced details" 以下で次の設定をする
- "Shutdown behavior" → "Terminate"
- "Termination protection" → "Disable"
- "Stop protection" → "Disable"
- 以下の内容を User data に指定する (24時間で終了する場合):
#cloud-config
repo_update: true
repo_upgrade: all
runcmd:
- [sh, -c, "( sleep 86400 ; systemctl poweroff ; ) </dev/null >/dev/null 2>&1 & disown -a ; exit 0"]
これでこのテンプレートを利用して作成されたインスタンスは 24 時間で自動終了します。
異なる時間を指定するには, sleep 86400
部分を対応する秒数に直します。
- 1時間:
sleep 3600
- 15分:
sleep 900