
OTT サービス技術部の赤澤です。
前回のブログではAWSリソースのコスト削減のためにAmazon EventBridgeを利用した定期的なリソースの停止、起動の方法を紹介しました。
developers.play.jp
約2年前に執筆したブログですが、現在はCloudFormationテンプレートからの設定ではなく、クラスメソッド株式会社様が提供しているopswitchというツールを使っています。
なぜ「opswitch」に切り替えたのか?
・設定の変更が手間かつ技術知識が求められた
スケジュールの変更には、CloudFormationテンプレートを編集する必要がありました。そのため、「誰でも直感的に設定を管理する」という状態が難しく、手間もかかる点が課題でした。
・稼働状況が直感的に分かりにくかった
リソースの稼働スケジュールがEventBridgeを参照するしかなく、「どのリソースが、いつ動いているのか」を一覧で把握するのが難しい点がありました。
「opswitch」を利用したことで、以上の課題を解決することができました。
実際に「opswitch」でスケジュールを設定してみる
AWSアカウントの連携
ユーザー登録をするとそのまま「AWSアカウント連携作成」まで進んでくれますので簡単に連携できます。CloudFormationのテンプレートが自動で作成されますのでほぼ実行するだけでした。
AWSアカウントの連携が完了したら、リソースの起動・停止スケジュールを設定します。
今回は、以前のブログで例に出したものと同じく「Auroraクラスターを、平日の9時から23時まで稼働させる」という設定をしていきます。
タスクの作成
まず「何をするか(例:DBを起動する)」という設定を「タスク」として作成します。
「AWSタスク」から ドロップダウンで「DBクラスターの起動・停止」を開きます。

起動用のタスクと停止用の2つのタスクを作成します。 設定対象のAuroraクラスターはタグで判別しますので、対象のAuroraクラスターにはタグを設定しておきましょう。
ジョブの作成
次に「いつ、どのタスクを実行するか(例:平日の朝9時に、DB起動タスクを実行する)」という設定を「ジョブ」として作成します。
「ジョブ」を開きます。 起動用のジョブと停止用のジョブを作成します。

では、平日の9時に起動するスケジュールを登録します。

月曜~金曜をチェックして、時間に9:00を入力、ジョブ名等を設定しましょう。
「タスク」にて起動用のタスクを選択します。
次に、平日の23時に停止するスケジュールを登録します。

時間を23:00に設定する以外は同じです。
「タスク」にて停止用のタスクを選択します。
設定したジョブが「ジョブ一覧」として表示されます。

「ジョブ一覧」から対象のジョブを選択して、曜日、時間を変更することで簡単にスケジュールの変更が可能です。
まとめ
今回は、EventBridgeとCloudFormationを使った方法から、「opswitch」を利用するようになった話をさせていただきました。
opswitchを導入することで、
- 簡単にスケジュールの変更や稼働状況の管理ができる
- コードの管理や設定の手間から解放される
といったメリットが得られ、運用負荷が下がりました。
AWSのコスト削減に、より手軽に取り組みたいと考えている方の参考になればと思います。