[小ネタ]opswitchを利用した定時停止起動の運用にて月末月初を対象外にして運用する
こんにちは。クラウド事業本部の木村です。
日頃組織のコスト最適化を推進しており、その中で検証環境のリソース(EC2,RDS等)の夜間や休日の停止にopswitchを活用しています。
CCoEチームとアプリチーム双方の負荷が極力かからない形でコスト最適化を行うことを目指し、ベースラインを設定して運用しています。設定例については以下のブログに紹介しておりますのでご参照ください。
今回その中で普段は夜間停止させるが月初のみ固有の処理を行うために、停止させず稼働させ続ける必要のあるケースがありました。当初こうした運用は難しくタグを月末だけ外してもらうなどの対応が必要かと思いましたが、opswitchの機能内で簡単に設定することができました。運用の中でよくあるケースかと思いますので、設定方法について共有させていただきます。
opswitchでの実現方法
普段は夜間停止し、月初のみ停止せずに稼働させ続ける方法をopswitchで実現するための方法を確認していきます。
毎日20:00に停止、翌8:00に起動し、月初の4時(X/1 4:00~)にジョブが動くシナリオで進めていきます。
停止ジョブを回避する
夜間停止を行うケースにおいては、以下のように夜に実行する停止のジョブと朝に起動のジョブをセットで設定します。

月末においては20:00の停止を回避することで、夜間も起動した状態とすることができます。

そのため月初の4時に起動した状態を保つには、月末の停止ジョブをスキップすれば良さそうです。
※起動時に起動のジョブが走っても、影響がないので起動ジョブについては考慮しません。
opswitchの除外日機能
opswitchには、任意の日程でジョブを実行させたくない日をあらかじめ指定しておくことで、その日だけ実行をスキップできる機能があります。
仕様は次のとおりです。
- 除外日は
YYYY-MM-DD形式で登録する - 1ジョブあたり最大100件まで登録できる
今回はこちらを停止ジョブにて月末に設定することで、停止することを回避していきます。
設定してみる
opswitchにログインしてジョブを作成します。
ジョブの除外項目以外は通常設定する項目と同一です。

今回は以下の除外項目を設定します。

100個の指定制限があるので100ヶ月後までの月末を指定しています。(2026/06 ~ 2034/09)
以下は現時点の日時に合わせて設定してください。
2026-06-30
2026-07-31
2026-08-31
2026-09-30
2026-10-31
2026-11-30
2026-12-31
2027-01-31
2027-02-28
2027-03-31
2027-04-30
2027-05-31
2027-06-30
2027-07-31
2027-08-31
2027-09-30
2027-10-31
2027-11-30
2027-12-31
2028-01-31
2028-02-29
2028-03-31
2028-04-30
2028-05-31
2028-06-30
2028-07-31
2028-08-31
2028-09-30
2028-10-31
2028-11-30
2028-12-31
2029-01-31
2029-02-28
2029-03-31
2029-04-30
2029-05-31
2029-06-30
2029-07-31
2029-08-31
2029-09-30
2029-10-31
2029-11-30
2029-12-31
2030-01-31
2030-02-28
2030-03-31
2030-04-30
2030-05-31
2030-06-30
2030-07-31
2030-08-31
2030-09-30
2030-10-31
2030-11-30
2030-12-31
2031-01-31
2031-02-28
2031-03-31
2031-04-30
2031-05-31
2031-06-30
2031-07-31
2031-08-31
2031-09-30
2031-10-31
2031-11-30
2031-12-31
2032-01-31
2032-02-29
2032-03-31
2032-04-30
2032-05-31
2032-06-30
2032-07-31
2032-08-31
2032-09-30
2032-10-31
2032-11-30
2032-12-31
2033-01-31
2033-02-28
2033-03-31
2033-04-30
2033-05-31
2033-06-30
2033-07-31
2033-08-31
2033-09-30
2033-10-31
2033-11-30
2033-12-31
2034-01-31
2034-02-28
2034-03-31
2034-04-30
2034-05-31
2034-06-30
2034-07-31
2034-08-31
2034-09-30
タスクは月末に停止除外させたいタスクを選択して設定してください。

設定内容は以上です。
ベースラインを設定している場合について
以前ブログで紹介させていただいたようなベースラインを設定するケースでは、基本設定のジョブに今回のような除外項目を設定すると全体で月末に停止が行われなくなってしまいます。
新たにタスクとジョブを設定して対応することで対象としたいリソースのみ月末の停止を回避することができます。
新たに設定するタスクでは、以下のように既存のタグと別のKeyを設定することで重複して動作しないように設定してください。
- ベースラインで設定しているタグ例
- key:everydaystop
- value:pm10
- 月末のみスキップするタグ例
- key:monthendskipstop
- value:pm10
まとめ
今回はopswitchで普段は夜間停止しつつ、月末の夜間のみ停止を回避する方法をご紹介させていただきました。
ベースラインとして夜間の停止を提供しつつ、こうした特殊なパターンについても柔軟に対応できるopswitchは便利だなと改めて感じました。
検証環境など夜間に稼働している必要のない環境では、以前のベースライン設定ブログと合わせて参考にしていただきコスト最適化の一助となれば幸いです。
以上、クラウド事業本部の木村がお届けしました。










