4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RDS自動停止の設定をしてみた

Last updated at Posted at 2024-12-11

はじめに

こんにちは。すぎもんです:smiley:
Amazon RDSは稼働時間によって課金されるシステムです。使用しない間はずっと停止しておきたいところですが、AWSの仕様で停止後7日間で自動的に起動されてしまいます。そのため、RDSを使用していない場合でも毎週手動で停止する作業が発生します。また、停止するのを忘れると想定外の課金が発生する可能性があります。

以前投稿した「HULFT10 for Container Servicesの ECS on Fargate 環境構築してみた」
https://qiita.com/sugimon/items/368f3f6746f124c1fa59
こちらでもRDSを利用しており、ナレッジをまとめてみました!

今回やること

Amazon EventBridgeでRDSを自動起動/停止するスケジュールを作成します。
今回は、毎日23時の自動停止と毎週月曜日22時40分の自動起動のスケジュールを作成します。

自動停止から7日後に自動起動されると、同時刻の自動停止が間に合わないため、毎週、自動停止時刻の直前で自動起動するスケジュールの作成も必要となります。

image.png

実施手順

以下の手順でRDSの自動起動/停止を設定します。
1.ポリシー作成
①ポリシーの作成
②サービスを選択
③アクション許可を指定
④確認して作成
⑤ポリシーの作成確認

2.ロール作成
①ロールを作成
②信頼されたエンティティを選択
③許可ポリシーを追加
④名前、確認、および作成
⑤ロールの作成確認

3.停止スケジュール作成
①スケジュールを作成
②スケジュール名を入力
③スケジュールを指定
④ターゲットの選択
⑤スケジュール完了後のアクション指定
⑥アクセス許可を指定
⑦スケジュールを確認して作成
⑧スケジュールの作成確認

4.起動スケジュール作成
①スケジュールを作成
②スケジュール名を入力
③スケジュールを指定
④ターゲットの選択
⑤スケジュール完了後のアクション指定
⑥アクセス許可を指定
⑦スケジュールを確認して作成
⑧スケジュールの作成確認

5.スケジュールの実行確認
①イベント履歴の確認
②RDSの自動停止確認
③RDSの自動起動確認

1.ポリシー作成

① ポリシーの作成
AWSマネジメントコンソールのIAM > ポリシーで「ポリシーの作成」を押下します。
image.png

②サービスを選択
サービスを「RDS」で検索し、「RDS」を選択します。
image.png

③アクション許可を指定
アクションを「StopDB」で検索し、「StopDBCluster」にチェックを入れます。

DBインスタンスのみ停止する場合は「StopDBInstance」にチェックを入れます。

image.png

アクションを「StartDB」で検索し、「StartDBCluster」にチェックを入れて、「次へ」を押下します。

DBインスタンスのみ起動する場合は「StartDBInstance」にチェックを入れます。

image.png

④確認して作成
ポリシー名を入力し、許可の内容を確認し、「ポリシーの作成」を押下します。
image.png

⑤ポリシーの作成確認
ポリシーが作成されたことを確認します。
image.png

2.ロール作成

①ロールを作成
AWSマネジメントコンソールのIAM > ロールで「ロールを作成」を押下します。
image.png

②信頼されたエンティティを選択
「カスタム信頼ポリシー」にチェックを入れ、カスタム信頼ポリシーの「Principal」に
「"Service": "scheduler.amazonaws.com"」を入力し、「次へ」を押下します。
image.png

③許可ポリシーを追加
許可ポリシーは「1.ポリシー作成」で作成したポリシー名 にチェックを入れ、「次へ」を押下します。
image.png

④名前、確認、および作成
「ロール名」を入力し、設定内容を確認して、「ロールを作成」を押下します。
image.png

⑤ロールの作成確認
ロールが作成されたことを確認します。
image.png

3.停止スケジュール作成

①スケジュールを作成
AWSマネジメントコンソールのAmazon EventBridge > スケジュールで「スケジュールを作成」を押下します。
image.png

②スケジュール名を入力
スケジュール名を入力します。
image.png

③スケジュールを指定
「定期的なスケジュール」にチェックを入れ、「cron ベースのスケジュール」にチェックを入れます。
cron式でスケジュールを入力し、「次へ」を押下します。

以下は毎日23時のスケジュールを指定する場合の例です。
image.png

cron 式の仕様として日付と曜日を同時に指定するスケジュールは設定できません。日付もしくは曜日に値を指定した場合(*を含む)はもう一方の値に?を設定する必要があります。

④ターゲットの選択
「すべてのAPI」にチェックを入れ、AWSのサービスを「RDS」で検索し、「Amazon RDS」をクリックします。
image.png

「StopDB」で検索し、「Amazon RDS StopDBCluster」にチェックを入れます。
DBクラスターID を入力して、「次へ」を押下します。

DBインスタンスのみ停止する場合は「Amazon RDS StopDBInstance」にチェックを入れ、DBインスタンスIDを入力します。

image.png

DBクラスターIDの確認方法については以下を参照してください。

RDS > ベータベースでターゲットのDBクラスターを選択し、設定タブのDBクラスターIDを確認します。
image.png

⑤スケジュール完了後のアクション指定
スケジュール完了後のアクションを指定します。
image.png

⑥アクセス許可を指定
「既存のロールを使用」にチェックを入れ、 「2.ロール作成 」 で作成したロールを指定して、「次へ」を押下します。
image.png

⑦スケジュールの確認と作成
スケジュールの内容を確認し、「スケジュールを作成」を押下します。

image.png

⑧スケジュールの作成確認
スケジュールが作成されたことを確認します。
image.png

4.起動スケジュール作成

①スケジュールを作成
AWSマネジメントコンソールのAmazon EventBridge > スケジュールで「スケジュールを作成」を押下します。
image.png

②スケジュール名を入力
スケジュール名を入力します。
image.png

③スケジュールを指定
「定期的なスケジュール」にチェックを入れ、「cron ベースのスケジュール」にチェックを入れます。
cron式でスケジュールを入力し、「次へ」を押下します。

起動処理にかかる時間を考慮し、自動停止時刻までに起動が完了するように起動スケジュールを設定します。

以下は毎週月曜日22時40分のスケジュールを指定する場合の例です。
image.png

cron 式の仕様として日付と曜日を同時に指定するスケジュールは設定できません。日付もしくは曜日に値を指定した場合(*を含む)はもう一方の値に?を設定する必要があります。

④ターゲットの選択
「すべてのAPI」にチェックを入れ、AWSのサービスを「RDS」で検索し、「Amazon RDS」をクリックします。
image.png

「StartDB」で検索し、「Amazon RDS StartDBCluster」にチェックを入れます。
DBクラスターID を入力して、「次へ」を押下します。

DBインスタンスのみ起動する場合は「Amazon RDS StartDBInstance」にチェックを入れ、DBインスタンスIDを入力します。

image.png

DBクラスターIDの確認方法については以下を参照してください。

RDS > ベータベースでターゲットのDBクラスターを選択し、設定タブのDBクラスターIDを確認します。
image.png

⑤スケジュール完了後のアクション指定
スケジュール完了後のアクションを指定します。
image.png

⑥アクセス許可を指定
「既存のロールを使用」にチェックを入れ、 「2.ロール作成 」 で作成したロールを指定して、「次へ」を押下します。
image.png

⑦スケジュールの確認と作成
スケジュールの内容を確認し、「スケジュールを作成」を押下します。
image.png

⑧スケジュールの作成確認
スケジュールが作成されたことを確認します。
image.png

5.スケジュールの実行確認

①イベント履歴の確認
AWSマネジメントコンソールのCloudTail > イベント履歴で停止スケジュールと起動スケジュールのイベント履歴があることを確認します。

image.png

・[ルックアップ属性]で選択した属性で検索することが可能です。
・確認したいイベントの[イベント名]をクリックすると詳細が表示されます。
・イベント履歴は過去90日間の履歴が確認できます。

②RDSの自動起動確認
AWSマネジメントコンソールのRDS > データベースでDBクラスターとDBインスタンスのステータスを確認します。起動スケジュール実行前に「一時的に停止済み」となっていたステータスが、起動スケジュール実行後に「利用可能」に変わることを確認します。

【起動スケジュール実行前】
image.png

【起動スケジュール実行後】
image.png

③RDSの自動停止確認
AWSマネジメントコンソールのRDS > データベースでDBクラスターとDBインスタンスのステータスを確認します。停止スケジュール実行前に「利用可能」となっていたステータスが、停止スケジュール実行後に「一時的に停止済み」に変わることを確認します。

【停止スケジュール実行前】
image.png

【停止スケジュール実行後】
image.png

最後に

皆さん、いかがでしたでしょうか。
今回は、Amazon EventBridgeのスケジュールを使って、Amazon RDSの自動起動/停止を設定してみました。毎週手動停止している作業の自動化や、RDSの停止し忘れにより無駄な課金が発生しないように、自動起動/停止を是非試してみてください!

このブログでは、今後も様々なTopics記事や接続検証等、皆さんの役に立つような記事を投稿していきたいと思います!
これからも是非チェックいただき、宜しければフォローをお願いします。
最後まで読んでいただきありがとうございました!それでは、また!

4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?