RDS をEventBridge Schedulerで毎日停止する
概要
- RDS を開発や検証に使用する環境において、コストを抑えるため、毎日にRDS インスタンス(あるいは RDS クラスター)を夜間停止させたい等のニーズがあると思います。今回は、Amazon EventBridge Scheduler を使用し、RDSを毎日停止する方法になります。
- Amazon EventBridge Scheduler は、手軽にAWSサービスや API オペレーションを呼び出すことが出来ます。cron や rate式を使った繰り返しのパターンでスケジュールを作成したり、1回限りの呼び出しも可能です。
RDS をEventBridge Schedulerで毎日停止する手順
IAM ポリシー/ロールの作成
- 先ず、EventBridge Scheduler に指定するIAM ポリシー/ロールを作成します。
- 以下、IAM ポリシーの作成画面です。
- IAM ポリシーは、以下のJSON を使用します。必要に応じて、Resource は “*" ではなく、対象のリソースを記載ください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"rds:StopDBCluster",
"rds:StopDBInstance"
],
"Resource": "*"
}
]
}
- 以下のIAM ポリシーが作成されました。(例: RDSStopPolicy)
- 以下、IAM ロールの作成画面です。
- 「信頼されたエンティティタイプ」に「カスタム信頼ポリシー」を指定します。
- カスタム信頼ポリシーには、以下の JSON を指定します
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- ポリシーには、先ほど作成したIAM ポリシー(例: RDSStopPolicy) を指定します。
- ロール名、説明を指定します。
- 以下のIAM ロールが作成されました。(例: EventScheduler-RDSStopRole)
Amazon EventBridge スケジューラの作成
- Amazon EventBridge Scheduler のコンソールを開き、左ペインからスケジュールを選択します。
- 以下の画面が表示されます。「スケジュールを作成」を押下します。
- スケジュール名、説明を指定します。
- スケジュールのパターンとして、頻度に「定期的なスケジュール」、スケジュールの種類に「cron ベースのスケジュール」、cron 式にスケジュールに指定する日時を定義します。時間はローカルのタイムゾーン (JST) で指定出来ました。
- タイムゾーンは、「Asia/Tokyo」を指定。開始日時、終了日時は、特に指定していません。
- 続けて、ターゲットとして呼び出すAPI を選択します。「すべての API」→「Amazon RDS」を選択します。
- 今回は、Aurora の DBクラスターを対象とするため、「StopDBCluster」を選択します。
- パラメータとして、DbClusterIdentifier に、DBクラスターのリソース名を指定します。
- スケジュールを有効化を選択します。スケジュール完了後のアクションは、「NONE」を指定します。
- 実行ロールに「既存のロールを使用」を選択し、先ほど作成したIAM ロールを指定します。
- スケジュールの設定値を確認し、「スケジュールを作成」を押下します。
- 以下のスケジュールが作成されました。
RDS 停止の動作確認
- スケジュールに指定した時間にRDS クラスターが停止されたことを確認します。