今回はEC2SchedulerというAWS公式が提供しているEC2インスタンスの起動停止をスケジューリングできるツールを利用して見たいと思います。
EC2Schedulerとは?
AWS公式が提供しているEC2インスタンスの起動停止をスケジューリングできるツールです。
EC2に起動停止の時間などを記載したタグをつけることで、インスタンスを毎日自動的に起動/停止してくれます。
EC2Schedulerをつかってみる
実際にEC2Schedulerを使ってみたいと思います。
CloudFormationテンプレートのダウンロード
以下からec2-scheduler.templateをダウンロードします。
CloudFormationスタックをつくる
マネジメントコンドールのCloudFormationから「スタックの作成」を選択します。
「テンプレートの選択」でさきほどダウンロードしてきたec2-scheduler-.templateを選択します。
選択したら「次へ」すすみます。
「スタックの名前」に任意の名前をつけます。
「パラメータ」はデフォルトのままいったん「次へ」でかまいません。
オプションも一旦そのまま「次へ」でかまいません。
CAPABILITYの「AWS CloudFormationによってIAMリソースが作成される場合があることを承認します」にチェックをいれ、「作成」を選択します。
スタックが作成されるのでしばらく待ちます。
「状況」が「CREATE_COMPLETE」となったら完了です。
インスタンスにタグをEC2Schedulerのタグをつける
EC2Schedulerでスケジュール起動停止したいインスタンスを選択し、タグを設定します。
設定するタグの例は以下の表に示します。
時間はUTCでしか記載できないので注意が必要です。
EC2Schedulerのタグの例
タグ値の例 | 説明 |
---|---|
0800;1800;utc;all | インスタンスは08:00に開始し、18:00にすべての曜日に停止します。 |
1000;1700;utc;weekdays | インスタンスは1000から開始し、月曜日から金曜日の17:00に停止します。 |
1030;1700;utc;mon,tue,fri | インスタンスは1030に開始し、月曜日、火曜日、金曜日にのみ17:00に停止します。 |
0815;1745;utc;wed,thu | インスタンスは0815に開始し、水曜日と木曜日のみ1745に停止します。 |
none;1800;utc;weekdays | インスタンスは、月曜日から金曜日の18:00に停止します。インスタンスは手動で起動する必要があります。 |
0800;none;utc;weekdays | インスタンスは月曜日から金曜日の08:00に開始します。インスタンスを手動で停止する必要があります。 |
none;none;utc;weekdays | インスタンスは手動で開始および停止する必要があります(自動アクションは実行されません)。 |
0800 | インスタンスは08:00に開始され、Amazon DynamoDBテーブルに格納されているデフォルトのアクティブ日にデフォルトの停止で停止します。 |
0800;1800 | インスタンスは、Amazon DynamoDBテーブルに格納されているデフォルトの有効日数で、08:00に開始し、18:00に停止します。 |
0800;1800;utc | インスタンスは、Amazon DynamoDBテーブルに格納されているデフォルトの有効日数で、08:00に開始し、18:00に停止します。 |
default | インスタンスは、デフォルトのスケジュールで開始および停止します。 |
True | インスタンスは、デフォルトのスケジュールで開始および停止します。 |
EMPTY | インスタンスに対して実行されるアクションはありません。 |
Random String | インスタンスに対して実行されるアクションはありません。 |
以下公式ドキュメントから抜粋
Automated Deployment - EC2 Scheduler on AWS
EC2Schedulerが実行されたか確認する
マネジメントコンソールの「CloudWatch」から「メトリクス」、「EC2Scheduler」と選択します。
「Region」を選択します。
するとEC2Schedulerを設定したインスタンスのリソースIDを設定したが表示されるので、EC2Schedulerの実行状態を確認したいインスタンスのリソースIDを選択します。
グラフが0か1になっているのがわかるかと思います。
0が停止で1が起動です。
今回は1405;1420;utc;weekdays
と設定してみましたので設定通り14:05起動(1)、14:20に停止(0)されていることがわかります。
まとめ
EC2Schedulerをつかってインスタンスの自動起動停止を実施してみました。
夜間はインスタンスを停止するなど、コスト削減の基本ですのでこういったものを利用してみるのもいいかもしれません。