LoginSignup
24
29

More than 3 years have passed since last update.

RDSを自動停止・自動起動する

Last updated at Posted at 2020-10-14

RDSの自動停止と自動起動の設定方法。
CloudWatchEvent と SSMAutomation を利用します。

他にも「lambdaを使って特定のタグがついた全てのインスタンスの停止APIを呼び出す」みたいなのがありますが、こちらはインスタンスIDを指定するだけで設定できます。

ポリシーの作成

実行用のポリシーとロールの作成が必要です。
すでにある場合は イベントルールの作成 までスキップしてください。

  • IAM > ポリシー > ポリシーの作成 をクリック スクリーンショット 2020-10-14 16.31.00.png

RDSに対するアクセス許可

  • サービス で「RDS」を選択
    • 「rds」を入力するとすぐに出てくる
  • アクション で「StartDBInstance」と「StopDBInstance」を選択
    • 「start」「stop」を入力するとすぐに出てくる
  • リソース で「このアカウント内のいずれか」にチェックを入れる スクリーンショット 2020-10-14 16.33.48.png

SNSに対するアクセス許可

  • 「さらにアクセス許可を追加する」をクリック
  • サービス で「SNS」を選択
  • アクション で「書き込み」にチェックを入れる
  • リソース で「このアカウント内のいずれか」にチェックを入れる スクリーンショット 2020-10-14 16.41.59.png

SystemsManagerに対するアクセス許可

  • 「さらにアクセス許可を追加する」をクリック
  • サービス で「SystemsManager」を選択
    • 「system」を入力するとすぐに出てくる
  • アクション で「すべての Systems Manager アクション (ssm:*)」にチェックを入れる
  • リソース で「このアカウント内のいずれか」にチェックを入れる スクリーンショット 2020-10-14 16.43.26.png

作成

  • 任意のポリシー名を入力し「ポリシーの作成」をクリック

ロールの作成

  • IAM > ロール > ロールの作成 をクリック スクリーンショット 2020-10-14 15.12.59.png
  • AWSサービス > SystemsManager > SystemsManager を選択して次のステップへ スクリーンショット 2020-10-14 16.49.09.png
  • 先ほど作成したポリシーを選択して次のステップへ スクリーンショット 2020-10-14 16.55.29.png
  • タグは特に必要ないので次のステップへ
  • 任意の「ロール名」を設定し「ロールの作成」をクリック スクリーンショット 2020-10-14 16.56.10.png

ロールの信頼関係を修正

  • IAMロール一覧から作成したロールを選択
  • 信頼関係 > 信頼関係の編集 をクリック スクリーンショット 2020-10-14 17.13.10.png
  • Principal > Service["events.amazonaws.com","rds.amazonaws.com","ssm.amazonaws.com"] にして更新 スクリーンショット 2020-10-14 17.11.24.png

イベントルールの作成

  • CloudWatch > ルール > ルールの作成 をクリック スクリーンショット 2020-10-14 14.45.00.png
  • スケジュールCron式 を選択
  • 自動停止または起動させたい時間をcron式で入力する
    • GMTなので日本時間に合わせるために -9時間 する
    • 例: 毎日23:00に停止させたい → 00 14 ? * * * 68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3235323136352f38353962653761312d663731652d643234392d393731662d3834633833663764323962372e706e67.png
  • ターゲット のアクションから「SSM Automation」を選択
    • 「ssm」を入力するとすぐに出てくる
  • 停止する場合: ドキュメント で「AWS-StopRdsInstance」を選択
    • 「stop」を入力するとすぐに出てくる
  • 起動する場合: ドキュメント で「AWS-StartRdsInstance」を選択
    • 「start」を入力するとすぐに出てくる
  • 定数 > InstanceId に対象のDBインスタンスの DB識別子 を入力
  • 「既存のロールを使用」を選択
  • 先ほど作成したロールを選択する
    • ロール名で絞り込み出来る
  • ターゲットを追加したい場合は同様にして追加する スクリーンショット 2020-10-14 17.02.51.png
  • 「設定の詳細」をクリック
  • 任意のルール名と説明を入力
    • ルール名は後から変更できないので注意
  • 有効化にチェックが入っていることを確認して「ルールの作成」をクリック

注意点1

本番環境におけるRDSインスタンスの停止は推奨されないようです。
あくまで開発・検証用の機能として存在するのでご注意ください。

一時的に Amazon RDS DB インスタンスを停止する より

一時的なテストや毎日の開発作業のために、断続的に DB インスタンスを使用する場合、コスト削減のため、Amazon RDS DB インスタンスを一時的に停止できます。

RDSを本番環境で停止運用しないほうが良い理由について より

キャパシティ不足時に対応する手段が限られている

これが、RDSを本番環境では停止・開始することが推奨できない最も厳しい理由となります。

注意点2

インスタンスを停止できる最大期間は7日間です。 以降は自動的に起動されます。

一時的に Amazon RDS DB インスタンスを停止する より

インスタンスは最大 7 日間停止できます。
7 日後に DB インスタンスを手動で起動しなかった場合、DB インスタンスは自動的に起動されるため、必要なメンテナンス更新
が遅れることはありません。

関連

EC2を自動停止・自動起動する

24
29
1

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
24
29