前段
学習でAWSを利用していると、メールでAWS Budgetsの予算通知アラートがきていました。AWSマネジメントコンソールにアクセスしたところ、EC2を停止し忘れていたことが発覚...
そこで、EC2の停止忘れ防止にEC2自動停止設定を行いました。
方法
EventBridge用IAMロールの作成とEventBridge停止用ルールの作成を行いました。
以下の記事を参考に設定していますので、詳しくはそちらを参照ください。
https://techblog.techfirm.co.jp/entry/aws-ec2-automation
https://blog.jbs.co.jp/entry/2023/06/20/083000
失敗談
EC2自動停止設定を行い、安心していたのですが、別の日に再びメールでAWS Budgetsの予算通知アラートが...
AWSマネジメントコンソールにアクセスし確認すると、EC2が停止していない?!
AWS CloudTrailで確認してみるとどうやら複数のEC2の指定で、存在しないEC2のインスタンスIDを指定していた為、エラーになり、Amazon EventBridge スケジューラが動かなかった模様。
Amazon EventBridge スケジューラを設定して以降、EC2インスタンスを1つ削除していたのが原因でした。
存在しないEC2のIDを指定してしまうと、スケジューラーが上手く実行されず、起動中のEC2を停止できないことがわかりました。
問題発覚の流れ
- 作成していた全てのEC2の自動停止のスケジューラーを作成
- EC2を複数学習用に作成していて、その中の1つを使用しなくなった為、削除した
- スケジューラーの設定は変更しなかった
- EC2をうっかり起動したままにしてしまった
- AWS Budgetsの予算通知アラートがメールできていた
- マネジメントコンソールにログインし、EC2インスタンスが起動中を確認
→削除したインスタンスはスケジューラーで設定しているIDを削除する必要がある
良い点
個人の学習でEC2インスタンスを作成して、しばらく使うならスケジューラーを設定するのはいいかもしれません。
懸念点
この設定はインスタンスの数が多かったりすると、インスタンスIDの指定が大変ですし、頻繁に作成・削除を繰り返すなら、メンテナンスが必要で向いていなさそうに感じました。
最後に
AWS Budgetsの設定をしておくことが一番いいのかもしれませんね...
今度はインスタンスIDを指定せず、起動中のインスタンスを自動で停止する方法を調べてみたいと思います!