AWS Systems Manager の「オートメーション」と「CloudWatch Events」を利用して RDS を定期的に停止する設定手順について解説します。
【AWS】Systems Manager で CloudWatch Events を利用して EC2 インスタンスを自動起動・自動停止する(オートメーション)
手順概要
以下の手順で設定します。
- ロールの作成
- リソースグループの登録
- CloudWatchEventsの作成
- 動作確認
ロールの作成
AWS 管理コンソールにログインし「サービス」–「セキュリティ、ID、およびコンプライアンス」–「IAM」をクリックします。
「Identity and Access Management(IAM)」のダッシュボードより「ロール」をクリックします。
「ロールの作成」ボタンをクリックします。
「信頼されたエンティティの種類を選択」より「AWS サービス」をクリックし、「このロールを使用するサービスを選択」より「EC2」を選択します。
※今回は RDS の自動停止ですが、ここで EC2 を選択します。その理由は RDS を選択するとサービスロールの割り当てとなってしまい、ポリシーを変更できなくなるからです。
「Attach アクセス権限ポリシー」の「ポリシーのフィルタ」に「AmazonRDSFullAccess」と「AmazonSSMAutomationRole」を選択し、下図のように 2つを選択して「次のステップ:タグ」ボタンをクリックします。
「タグの追加(オプション)」で必要な場合はタグを設定し「次のステップ:確認」ボタンをクリックします。
「確認」画面にて「ロール名」を設定してポリシーが「AmazonRDSFullAccess」と「AmazonSSMAutomationRole」が選択されていることを確認し「ロールの作成」ボタンをクリックします。
ロールが作成されたら、作成したロール名(今回の場合は「AUTO-STOP-RDS-ROLE」)をクリックします。
「信頼関係」タブをクリックします。
「信頼関係の編集」ボタンをクリックします。
信頼関係の編集画面で下図のようにポリシーが設定されていることを確認します。
■ポリシー(編集前)
■ポリシー(編集前)
{ |
ポリシーを以下のように編集します。
編集したら「信頼ポリシーの更新」ボタンをクリックします。
■ポリシー(編集後)
■ポリシー(編集後)
{ |
下図のように「信頼されたエンティティ」に「ID プロバイダー events.amazonaws.com」が設定されていることを確認します。
CloudWatch Events からのオートメーションによるインスタンス実行のスケジューリング設定手順
ロールの準備が出来たら、CloudWatch Events の設定をして Systems Manager の「オートメーション」による EC2 インスタンスを起動するスケジューリングをします。
起動は CloudWatch の CRON 式を利用します。
AWS 管理コンソールにログインし「サービス」–「管理とガバナンス」–「CloudWatch」をクリックします。
CloudWathc のダッシュボードに移動したら、左側ペインより「イベント」をクリックします。
「Amazon CloudWatch Events」の「Get started」ボタンをクリックします。
「ルールの作成」画面でイベントソースを設定します。
「スケジュール」を選択し、「Cron 式」を選択してスケジュールを入力します。画面では例として 5分おきに実行される設定を入れています。
次に「ターゲット」の「ターゲットの追加」ボタンをクリックします。
ターゲットに「SSM Automation」を選択します。
以下のようにターゲットが「SSM Automation」になっていることを確認します。
ちなみに以下のターゲットを選択できます。
■選択できるターゲット一覧
以下のターゲットを選択できます。
- Batch job queue
- CodeBuild poject
- CodePipeline
- EC2 CreateSnapshot API 呼び出し
- EC2 RebootInstances API 呼び出し
- EC2 StopInstances API 呼び出し
- EC2 TerminateInstances API 呼び出し
- ECS タスク
- Firehose 配信ストリーム
- Inspector assesment template
- Kinesis ストリーム
- Lambda 関数
- SNS トピック
- SQS キュー
- SSM Automation
- SSM OpsItem
- SSM Run Command
- Step Functions ステートマシン
- 別の AWS アカウントのイベントパス
「ターゲット」に「AWS-StopRdsInstance」を選択します。
「ドキュメントのバージョン設定」は「デフォルト」を選択し、「オートパラメータの設定」に「定数」を選択し、「InstanceId」に停止する RDS 名(今回の場合は sqlservertest01)を入力します。
ロールの選択に関しては「既存のロールを使用」を選択し、先ほど作成した「AUTO-STOP-RDS-ROLE」を選択し、「設定の詳細」ボタンをクリックします。
「ルールの詳細を設定する」画面でルールの名前(今回の場合は AUTO-STOP-RDS)を設定し「ルールの作成」ボタンをクリックします。
下図のようにエラーが出力されずにルールが作成されることを確認します。
動作確認
最後に動作確認をします。
RDS が起動していることを確認します。
CloudWatch Events で設定したオートメーションが実行されるまで待ちます。
時間が経過後、下図のように RDS が停止していることを確認します。
参考にしたサイト
ありがとうございました!
CloudWatchEvents+SSMAutomationでRDS自動起動停止
コメント