3
2

More than 3 years have passed since last update.

開発用AWS RDSインスタンスを Instance Schedulerを使って自動起動・停止してコスト削減する

Last updated at Posted at 2020-01-26

最近、AWS費用削減のため、Instance Schedulerを使ったRDSの自動起動・停止の仕組みを導入しました。
Instance Schedulerは、EC2とRDSインスタンスの起動および停止スケジュールを設定できるソリューションです。
今回は、RDSを自動起動・停止するために必要な一連の設定手順についてまとめていこうと思います。

なお、手順については、AWSナレッジセンターの下記記事を参考にさせていただきつつ、ところどころ必要に応じて変更しています。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/stop-start-instance-scheduler/

事前準備

Instance Schedulerを使うには、Instance Scheduler CLIのセットアップが必要になります。また、Instance Scheduler CLIの利用するにあたり、AWS CLIの認証情報が必要になりますので、AWS CLIの設定も合わせて行う必要があります。
※AWS CLIとInstance Scheduler CLIが設定済みの方は、事前準備はスキップして大丈夫です。

AWS CLIのセットアップ

こちらはAWSの日本語ドキュメントが充実しているので、そちらを引用させていただきます。

Instance Scheduler CLIのセットアップ

下記ページにダウンロードリンクがあるので、こちらからパッケージ「scheduler-cli.zip」をダウンロードし、解凍します。
https://docs.aws.amazon.com/solutions/latest/instance-scheduler/appendix-a.html#install
Instance_Scheduler_1.png
解凍後、パッケージのディレクトリへ移動し、下記コマンドでインストールします。

.bash
# 解凍したパッケージのディレクトリへ移動
$ cd ~/Downloads/scheduler-cli

# インストール
$ python setup.py install

# scheduler-cliコマンドが使えることを確認
$ scheduler-cli --version
scheduler-cli v1.2.0

Instance Schedulerの設定

Instance Schedulerのスタック作成

それでは、ここからInstance Schedulerを設定していきます。
Instance Schedulerテンプレートが下記に用意されているので、下記ページにアクセスし、AWSコンソールにログインした上で「Launch Solution」をクリックして起動します。
https://docs.aws.amazon.com/solutions/latest/instance-scheduler/deployment.html#step1
Instance_Scheduler_2.png

デフォルトでは、バージニア北部(us-east-1)で開かれるので、右上のメニューから自身が利用したいリージョンに変更します。今回は東京(ap-northeast-1)で作成しますので、リージョン変更してから「次へ」をクリックします。

Instance_Scheduler_3.png

「スタックの詳細を指定」画面では、パラメータを選択・設定していきます。今回は下記のパラメータをデフォルト値から変更しています。

  • スタックの名前:RDSInstanceScheduler
  • Service(s) to schedule:RDS
  • Create RDS instance snapshot:No
  • Region:ap-northeast-1
  • Default time zone:Asia/Tokyo
  • Enable CloudWatch Logs:Yes
  • Log retention days:7
  • Started tags:state=started
  • Stopped tags:state=stopped

Instance_Scheduler_4.png
Instance_Scheduler_5.png
Instance_Scheduler_6.png

「スタックオプションの設定」画面はデフォルト値のまま「次へ」をクリックします。

「レビュー」画面で設定内容を確認できまし。内容を確認し、問題がなければ、「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックを入れ、「スタックの作成」をクリックします。
Instance_Scheduler_7.png

Instance Schedulerのスタック作成が完了すると、DynamoDBのインスタンススケジューラ構成テーブルが作成されます。このテーブルの中にインスタンスの起動する期間やスケジュール等の内容が保存されていて、scheduler-cliコマンドを使って必要な設定の作成・変更を行なっていきます。
Instance_Scheduler_8.png

今回は、月曜日から金曜日の7:30 〜 23:30の間、RDSインスタンスを起動するスケジュールを作成してみます。

インスタンスを起動する期間を作成・更新

期間では、インスタンスを起動しておく時間を定義します。「office-hours」という期間がデフォルトで作成されていますので、update-periodコマンドを使って、今回設定したい期間である「月曜日から金曜日の7:30 〜 23:30」へ変更します。なお、create-periodコマンドを使えば、好きな名称の期間を作成することもできます。

.bash
$ scheduler-cli update-period --profile cfn --stack RDSInstanceScheduler --region ap-northeast-1 --name office-hours --begintime 07:30 --endtime 23:30 --weekdays mon-fri
{
   "Period": {
      "Weekdays": [
         "mon-fri"
      ],
      "Endtime": "23:30",
      "Type": "period",
      "Begintime": "07:30",
      "Name": "office-hours"
   }
}

DynamoDBを確認すると、設定した期間に更新されていることを確認できます。
Instance_Scheduler_9.png

スケジュールを作成・更新

スケジュールは、RDSインスタンスにどのスケジュールを適用するかを識別するタグ値として使用します。
デフォルトで「uk-office-hours」というスケジュールが作成されていますので、それにならって、「jp-office-hours」というスケジュールを作成します。作成した後に設定内容を変更したい場合は、「update-schedule」コマンドを使って変更することができます。

bash
$ scheduler-cli create-schedule --profile cfn --stack RDSInstanceScheduler --name jp-office-hours --region ap-northeast-1 --periods office-hours --timezone Asia/Tokyo
{
   "Schedule": {
      "RetainRunning": false,
      "Enforced": false,
      "Hibernate": false,
      "Name": "jp-office-hours",
      "UseMetrics": false,
      "StopNewInstances": true,
      "Periods": [
         "office-hours"
      ],
      "UseMaintenanceWindow": false,
      "Timezone": "Asia/Tokyo",
      "Type": "schedule"
   }
}

DynamoDBを確認すると、新しいスケジュールが作成されていることが確認できます。
Instance_Scheduler_10.png

スケジュールのタグ付け

作成したスケジュールを停止したいRDSへタグ付けすれば、スケジュール通りに起動・停止するようになります。
対象のRDSのタグに下記の通り登録します。

  • Schedule:jp-office-hours Instance_Scheduler_11.png

RDSが停止している間は、下記のように停止中を意味するタグが付けられます。

  • Schedule:stopped Instance_Scheduler_12.png

RDSが起動している間は、下記のように起動中を意味するタグが付けられます。

  • Schedule:started Instance_Scheduler_13.png
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2