LoginSignup
12
3

More than 1 year has passed since last update.

【AWS】RDSを自動停止・自動起動させる方法まとめ

Posted at

はじめに

AWSのコスト、特にRDSはかなりしっかりコストがかかるシステムですよね。
優秀なシステムが故なのですが、少しでも節約ができるように本日は備忘録としてRDSを自動停止、起動するための手順を記事に残しておこうと思います。

①IAMの作成

今回EventBridgeを使用して日常的に停止と起動を繰り返すように調整します。
その為の準備としてまずはIAMロールの新規作成を行います。

スクリーンショット 2023-04-09 13.43.26.png

IAM > ロールから画面右上のロールを作成を選択します。

するとエンティティの選択画面が表示されますので、EventBridge Schedulerから実行できるようカスタム信頼ポリシーを選択します。
カスタム管理ポリシーでは、scheduler.amazonaws.comを許可します。

スクリーンショット 2023-04-09 19.55.29.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

上記を設定した後、次に進むとポリシーの選択画面が表示されます。
ポリシーは新規作成する必要があるため、画面右上にあるポリシーの作成を選択します。

スクリーンショット 2023-04-09 13.47.32.png

ポリシーの内容は起動と停止になりますので、以下を設定する必要があります。

StartDBInstance
StopDBInstance

スクリーンショット 2023-04-09 13.50.56.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "rds:StopDBInstance",
                "rds:StartDBInstance"
            ],
            "Resource": "*"
        }
    ]
}

上記を設定し次へ進みます。
タグは特に設定せずで大丈夫です、必要であれば調整し次へ進みます。

以下入力欄にポリシー名と説明を設定しポリシーを作成します。

スクリーンショット 2023-04-09 13.54.19.png

これでポリシーの作成は以上です。
先ほどのIAMロール作成画面に戻り、作成したポリシーを追加します。

※IAM画面へ戻った後も作成したはずのポリシーが表示されないようでしたら、IAMロールをリフレッシュしてみてください。

作成したポリシーを付与したら最後に名称と説明を任意の内容で設定し作成して終了です。

スクリーンショット 2023-04-09 13.56.10.png

②EventBridgeSchedulerの設定

IAMを作成したら、次は定期実行されるSchedulerを設定します。

注意点
DBの起動、停止それぞれでSchedulerの設定が必要です。
ほぼ同じ手順での登録なので、片方登録したらもう片方の設定を忘れずお願いします。

スクリーンショット 2023-04-09 13.58.52.png

EventBridgeを開いたら画面左のメニューから、スケジュールを選択し、画面右下のスケジュールを作成を選択。

すると作成画面が表示されるので、スケジュール名、説明は任意の内容を入力。

スクリーンショット 2023-04-09 14.02.31.png

次にスケジュールのパターンを設定します。
スケジュールの種類は定期的なスケジュールのcronベーススケジュールを選択します。
cornの時刻の設定方法に関しては、以下を参考にしてみてください。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-cloudwatchevents-expressions.html

フレックスタイムウィンドウ(処理時刻に余裕を持たせるか)はオフにしておきます。

スクリーンショット 2023-04-09 14.05.39.png

時間枠では、タイムゾーンと開始日時、終了日時を設定できます。
タイムゾーンは(UTC + 09:00) Asia/Tokyoにします。
開始時刻や終了日時は特に設定する必要はありません、未設定で大丈夫です。

スクリーンショット 2023-04-09 14.07.44.png

時刻関連の設定が終わり、次に進むとターゲットの詳細を設定する必要が出てきます。
今回はRDSの自動停止、起動なので、全てのAPIを選択し、入力欄にRDSと入力します。
3つが検索結果に表示されるはずなので、赤枠のものを選択します。

するとRDSに紐づく選択しが表示されるので、起動に関する設定であればStartと、停止に関する設定であればStopと検索します。

Startの場合:StartDBInstanceを選択
スクリーンショット 2023-04-09 19.40.23.png

Stopの場合:StopDBInstanceを選択
スクリーンショット 2023-04-09 19.40.36.png

それぞれ適切なものを選択し、以下に対象のDBインスタンスIDを指定してください。

スクリーンショット 2023-04-09 19.41.30.png

DBインスタンスIDの設定を終えたら次に進みます。
次に進むとスケジュールの状態再試行ポリシーとデッドレターキュー(DLQ)暗号化という項目がありますが、こちらに関しては変更不要です。
以下の既存の役割を選択だけ最初の手順で作成したロールを指定してください。

スクリーンショット 2023-04-09 19.48.29.png

ロールの選択を終えたら次へ進み、設定は以上となります。

さいごに

RDS、中々コストかかりますよね。
AWSLifeの方もこちらの方法を推奨されていたので、お困りの方はぜひご活用ください。

12
3
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
12
3