AWS運用かんたん自動化ツール「opswitch」(オプスウィッチ)でEC2インスタンスの起動・停止をスケジュールする。
こんにちは。プロダクトグループの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つです。
- EC2インスタンス起動タスク
- EC2インスタンス停止タスク
- 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の使い方やアップデートに関する情報を紹介していきたいと思います。