RDSの自動停止と自動起動の設定方法。
CloudWatchEvent と SSMAutomation を利用します。
他にも「lambdaを使って特定のタグがついた全てのインスタンスの停止APIを呼び出す」みたいなのがありますが、こちらはインスタンスIDを指定するだけで設定できます。
ポリシーの作成
実行用のポリシーとロールの作成が必要です。
すでにある場合は イベントルールの作成 までスキップしてください。
RDSに対するアクセス許可
-
サービス
で「RDS」を選択- 「rds」を入力するとすぐに出てくる
-
アクション
で「StartDBInstance」と「StopDBInstance」を選択- 「start」「stop」を入力するとすぐに出てくる
-
リソース
で「このアカウント内のいずれか」にチェックを入れる
SNSに対するアクセス許可
SystemsManagerに対するアクセス許可
- 「さらにアクセス許可を追加する」をクリック
-
サービス
で「SystemsManager」を選択- 「system」を入力するとすぐに出てくる
-
アクション
で「すべての Systems Manager アクション (ssm:*)」にチェックを入れる -
リソース
で「このアカウント内のいずれか」にチェックを入れる
作成
- 任意のポリシー名を入力し「ポリシーの作成」をクリック
ロールの作成
-
IAM
>ロール
>ロールの作成
をクリック
-
AWSサービス
>SystemsManager
>SystemsManager
を選択して次のステップへ
- 先ほど作成したポリシーを選択して次のステップへ
- タグは特に必要ないので次のステップへ
- 任意の「ロール名」を設定し「ロールの作成」をクリック
ロールの信頼関係を修正
- IAMロール一覧から作成したロールを選択
-
信頼関係
>信頼関係の編集
をクリック
-
Principal > Service
を["events.amazonaws.com","rds.amazonaws.com","ssm.amazonaws.com"]
にして更新
イベントルールの作成
-
CloudWatch
>ルール
>ルールの作成
をクリック
-
スケジュール
でCron式
を選択 - 自動停止または起動させたい時間をcron式で入力する
-
ターゲット
のアクションから「SSM Automation」を選択- 「ssm」を入力するとすぐに出てくる
- 停止する場合:
ドキュメント
で「AWS-StopRdsInstance」を選択- 「stop」を入力するとすぐに出てくる
- 起動する場合:
ドキュメント
で「AWS-StartRdsInstance」を選択- 「start」を入力するとすぐに出てくる
-
定数
>InstanceId
に対象のDBインスタンスの DB識別子 を入力 - 「既存のロールを使用」を選択
- 先ほど作成したロールを選択する
- ロール名で絞り込み出来る
- ターゲットを追加したい場合は同様にして追加する
- 「設定の詳細」をクリック
- 任意のルール名と説明を入力
- ルール名は後から変更できないので注意
- 有効化にチェックが入っていることを確認して「ルールの作成」をクリック
注意点1
本番環境におけるRDSインスタンスの停止は推奨されないようです。
あくまで開発・検証用の機能として存在するのでご注意ください。
一時的に Amazon RDS DB インスタンスを停止する より
一時的なテストや毎日の開発作業のために、断続的に DB インスタンスを使用する場合、コスト削減のため、Amazon RDS DB インスタンスを一時的に停止できます。
RDSを本番環境で停止運用しないほうが良い理由について より
キャパシティ不足時に対応する手段が限られている
これが、RDSを本番環境では停止・開始することが推奨できない最も厳しい理由となります。
注意点2
インスタンスを停止できる最大期間は7日間です。 以降は自動的に起動されます。
一時的に Amazon RDS DB インスタンスを停止する より
インスタンスは最大 7 日間停止できます。
7 日後に DB インスタンスを手動で起動しなかった場合、DB インスタンスは自動的に起動されるため、必要なメンテナンス更新
が遅れることはありません。