[opswitch] 土日・祝日を除いてEC2インスタンスとDBインスタンスの起動・停止をスケジュールする

opswitchのスケジュールの除外設定機能を使って、平日夜間・土日及び祝日にインスタンスを停止するジョブをスケジュールします。
2022.01.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、muroです。

EC2やRDSをオンデマンドで利用していて、使わない間はインスタンスを止めておきたいです。夜間はもちろん土日等の毎週決まった曜日に加えて、祝日や会社の休日も停止しておきたいです。opswitchのインスタンスの起動・停止タスクと、ジョブのスケジュール機能を使って、これらをスケジュールしてみます。

opswitchについて

opswitchは弊社が提供するAWS運用かんたん自動化ツールで、無料でお使いいただけます。opswitchの利用を開始するには、こちらから「新規登録」にお進みください。詳しくはユーザーガイド opswitchを開始するをご覧ください。 

スケジュールの除外設定機能について

祝日や休業日などでジョブを実行させたくない場合にあらかじめ日付を指定することでジョブ実行をスキップできる機能です。

  • ジョブのスケジュールが「日次」、「週次」、「実行間隔の指定」の場合に指定できます。
  • 日付は1ジョブあたり最大100件まで登録できます。

シナリオ

東京リージョンに複数のEC2インスタンスと一つのRDS DBインスタンスを起動して開発環境を構築しています。開発環境は平日(月曜日から金曜日)の9時から18時の間利用します。夜間、土日及び祝日は利用しません。

インスタンスへのタグ付け

opswitchでは、タグを指定してEC2インスタンスやDBインスタンスの起動・停止を行います。まずは、対象のリソースに特定のタグを付けます。ここでは例として以下のタグを付与します。

Key Value
environment development

タスクの設定

EC2インスタンスの起動タスクと停止タスクを作成します。この時、ターゲットとなるEC2インスタンスのタグとして、先ほどリソースに付与したタグを設定します。 opswitch-start-ec2-task opswitch-stop-ec2-task

次にDBインスタンスの起動タスクと停止タスクを作成します。ここでもターゲットとなるDBインスタンスのタグとして先ほどリソースに付与したタグを設定します。 opswitch-start-db-task opswitch-stop-db-task

ジョブの設定

あらかじめ、祝日データを用意しておきます。YYYY-MM-DD形式のリストを作成します。なお、祝日の情報は内閣府のページ(国民の祝日について - 内閣府)から取得しました。

2022-01-01
2022-01-10
2022-02-11
2022-02-23
2022-03-21
2022-04-29
2022-05-03
2022-05-04
2022-05-05
2022-07-18
2022-08-11
2022-09-19
2022-09-23
2022-10-10
2022-11-03
2022-11-23

続いて起動ジョブを作成します。

  • スケジュールは週次を選択して、月曜日から金曜日を選択します。
  • 時間を指定します。ここではインスタンスの起動が完了するまでに15分かかると想定して8時45分としました。なお、opswitchのジョブスケジュールの時間は全て日本標準時となります。
  • ジョブの実行をスキップする日付を指定(YYYY-MM-DD)にチェックを入れて、祝日のリストを貼り付けます。
  • DBインスタンス起動とEC2インスタンス起動の2タスクを設定します。

opswitch-start-job

続いて停止ジョブを作成します。起動ジョブと同様に設定します。 opswitch-stop-job

ジョブの設定は以上となります。

ジョブの実行結果と通知

スキップする日付に指定されている日はジョブの実行結果は成功と記録され、以下のようなメール通知やSlask通知を受け取ることができます。

opswitch(オプスウィッチ)をご利用のお客様

以下のジョブは実行をスキップする日付に設定されているため実行されませんでした。
ジョブ名:開発環境起動

まとめ

opswitchで毎週決まった曜日と時間にEC2やRDSを起動・停止するジョブを実行することに加えて、スケジュールの除外設定機能を使って特定の日のジョブ実行をスキップする方法をご紹介しました。AWSの利用料金の節約に役立てていただければ幸いです。