EC2の起動時間を制限してコストを削減しよう
仕事でステージング環境のEC2インスタンスを24時間起動しているのはコストがもったいないので起動制限をかけたお話です。
起動制限には2つのアプローチを取りました。
AutoScalingのスケジュールで起動数をコントロール
EventBridgeで停止と起動のルールを設定する。
AutoScaling
AutoScalingを利用している場合はとても簡単に設定出来ます。
AutoScalingのオートスケーリングのタブから「予定されたアクション」を2つ作成します。
1つ目は業務時間外に0台にするアクション
2つ目は平日の朝に1台起動するアクション
これだけで指定した時間に起動数をコントロールすることが出来ました。
Amazon EventBridge
2つ目の方法はEventBridgeを使用して起動と停止のイベントを作成する方法です。
ルールを作成から2つのルールを作成します。
1,ルールの詳細を定義
スケジュールを選択
2,スケジュールを定義
cronで設定出来ます。
以後10回のスケジュールも表示されるので設定ミスもなく親切だなと思いました。
3,ターゲットの選択
ターゲットはSystem Manager オートメーションを設定
ドキュメントにAWS-StartEC2Instanceを設定
(停止の場合はAWS-StopEC2Instance)
InstanceIdに対象のインスタンスを設定
実行ロールを選択します。
(ロールがない場合は事前にこのEvent用のロールを作成しておくと良いです。)
少し躓いたところは
停止・起動するだけなのでユーザーデータを設定していないと「インスタンスは立ち上がっているけどsolrとかのサービスが動いていない。。。」
最初は結局サーバーに入って手動でsolrを起動していました。
おわりに
ステージングや検証環境のEC2は使用していない時間が思いの外多いと思うので起動時間を絞ることで日々のコストの削減に繋げられます。
この記事が気に入ったらサポートをしてみませんか?