AWS運用かんたん自動化ツール「opswitch」(オプスウィッチ)でEC2インスタンスの起動・停止をスケジュールする。

クラスメソッドが提供するAWS上で使える自動ジョブ実行ツール「opswitch」(オプスウィッチ)で、EC2インスタンスの起動・停止をスケジュールする方法を紹介します。
2019.08.30

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

こんにちは。プロダクトグループのmuroです。

クラスメソッドは、AWS上で使える自動ジョブ実行ツール「opswitch」(オプスウィッチ)を提供しています。

今回はopswitchでEC2インスタンスの起動・停止をスケジュールする方法を紹介します。opswitchをこれからはじめる方は、こちらの記事もご覧ください。

AWS運用かんたん自動化ツール「opswitch」(オプスウィッチ)を使ってみよう!

シナリオ

平日のみ利用するアプリケーションサーバがあります。平日の8時から20時の間のみ稼働し、夜間と土日は停止します。アプリケーションサーバは、以下の3つのインスタンスがあります。

また、停止時にEBSボリュームのスナップショットも取得することにします。

タグを設定する。

各EC2インスタンスとEBSボリュームにタグを設定します。opswitchでは対象リソースをタグで指定するためです。タグはわかりやすいキー・値で、対象が絞り込みやすくなるように付けるとよいでしょう。今回は次のようなタグを付けることにします。

設定先 キー 説明
EC2インスタンス opswitch-auto-start 08-on-weekdays 平日8時に自動起動することを示すタグです。
EC2インスタンス opswitch-auto-stop 20-on-weekdays 平日20時に自動停止することを示すタグです。
EBSボリューム opswitch-create-snapshot true スナップショット作成対象であることを示すタグです。

EC2インスタンスとEBSボリュームともに同じタグを設定しました。

opswitchのタスクを作成する。

opswitchでジョブをスケジュールするには、まずどんな作業をするかをタスクとして作成します。今回作成するタスクは3つです。

  1. EC2インスタンス起動タスク
  2. EC2インスタンス停止タスク
  3. EBSスナップショット作成タスク

EC2インスタンス起動タスク

opswitchユーザーガイド | EC2インスタンスの起動・停止タスクの作成

EC2インスタンスを起動するタスクを作成します。ターゲットとするEC2インスタンスに以下のタグを指定します。

Key opswitch-auto-start
Value 08-on-weekdays

EC2インスタンス停止タスク

EC2インスタンスを停止するタスクを作成します。ターゲットとするEC2インスタンスに以下のタグを指定します。

Key opswitch-auto-stop
Value 20-on-weekdays

EBSスナップショット作成タスク

opswitchユーザーガイド | EBSスナップショットタスクの作成

EBSスナップショットを取得するタスクを作成します。ターゲットとするEBSボリュームに以下のタグを指定します。

Key opswitch-create-snapshot
Value true

なお、「世代数」にスナップショットを残す世代数を指定することができます。今回は過去5回分の世代を保持するように、「5」を指定しました。

opswitchのジョブを作成する。

タスクを作成したので、タスクをスケジュールするジョブを作成していきます。

EC2インスタンス起動ジョブ

まず、EC2インスタンスを起動するジョブを作成します。スケジュールは週次を選ぶと曜日を指定できるようになります。月曜日から金曜日にチェックし、8時にセットします。実行するタスクを種別「EC2インスタンスの起動・停止」から「8時にEC2インスタンスを起動するタスク」を選んで「更新」します。

EC2インスタンス停止ジョブ

つづいてEC2インスタンスを停止するジョブを作成します。同じようにスケジュールは週次を選び、月曜日から金曜日にチェックし、時間は20時にセットします。実行するタスクを種別「EC2インスタンスの起動・停止」から「20時にEC2インスタンスを停止するタスク」を選びます。次に「+」ボタンをクリックして、種別「EBSスナップショットの作成」から「EC2インスタンス停止後のEBSスナップショット作成タスク」を選び、「更新」します。

実行結果を確認する。

ジョブが作成できましたので、平日であればその日の夜から実行されるはずです。翌日opswitchにログインしてみると、ジョブがスケジュール通り実行されていることを確認できました。

さいごに

いかがでしょうか? opswitchで決まった時間に自動でEC2インスタンスを起動・停止させることができました。このようにopswitchでは色々なタスクを組み合わせて、きめ細かなスケジュールでジョブ実行することができます。

今後もopswitchの使い方やアップデートに関する情報を紹介していきたいと思います。