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

opswitch

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

クラスメソッドは、AWS総合支援サービス「クラスメソッドメンバーズ」のプレミアムサービスをご契約いただいているAWSアカウントを対象に、AWS上で使える自動ジョブ実行ツール「opswitch」(オプスウィッチ)を提供しています。

AWS上で使える自動ジョブ実行ツール「opswitch」の提供を開始しました

プレミアムサービスをご契約いただいてなくとも、メールアドレスとお使いのAWSアカウントがあればすぐにお試しいただけます。AWSアカウントを連携登録してから60日間は試用期間として全ての機能をお使いいただくことができます。

今回は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の使い方やアップデートに関する情報を紹介していきたいと思います。