目次

1. はじめに
2. 概要
3. IAMポリシーの設定
4. IAMロールの設定
5. EventBridgeルールの作成
6. 動作確認
7. まとめ

1. はじめに

今回は、Auroraクラスターを自動で停止させることを目的に検証をしました。
理由:RDSには停止したクラスターやインスタンスを7日後に自動的に起動するといった仕組みがあるため
Amazon Auroraクラスターを自動で停止したい際に必要な設定事項を項番2以降で説明していきます。
検証環境等で常に停止しておきたい等のニーズには合致する方法かと思われるため、そのような機能を手軽に実装したい方には有効的な手段かと思います。

※AWSサービスの略称名一覧
・RDS:Relational Database Service
・Aurora:Amazon Aurora
・IAM:Identity and Access Management
上記については略称名を記載させていただきます。

2.概要

実現方法としては、EventBridgeルールにてAuroraクラスターが起動した際のイベントを拾い、任意のイベントが来た際にEventBridgeをトリガーにSystems Managerのオートメーションを使用しAmazon Auroraクラスターを停止するといった流れになります。

以下が主に必要な設定事項。
・Systems Managerオートメーション用のIAMポリシーの作成
・Systems Managerオートメーション用のIAMロールの作成
・EventBridgeルールの作成

3. IAMポリシーの設定

以下がSystems Manager用に作成するポリシーの内容。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"rds:StopDBCluster",
"rds:DescribeDBClusters"
],
"Resource": "arn:aws:rds:ap-northeast-1:AWSアカウントID:cluster:任意のクラスター名"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"iam:PassRole",
"ssm:*"
],
"Resource": "*"
}
]
}

4. IAMロールの設定

信頼されたエンティティタイプを「カスタム信頼ポリシー」選択します。
以下の信頼ポリシーを記載してください。

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

5. EventBridgeルールの作成

▼ルールの設定値
ルール名:任意の名前を入力
説明:任意の説明
ルールタイプ:イベントパターンを持つルール
イベントソース:AWS イベントまたは EventBridge パートナーイベント
作成のメソッド:カスタムパターン(JSONエディタ)

▼イベントパターンの記述内容

{
"source": ["aws.rds"],
"detail-type": ["RDS DB Instance Event"],
"detail.EventID": ["RDS-EVENT-0078"],
"detail": {
"SourceArn": ["arn:aws:rds:ap-northeast-1:AWSアカウントID:db:対象のRDSインスタンス名"]
}
}

※イベントパターンの中で注意が必要なのが、”detail.EventID”です。
こちらはRDSを手動で起動した際にRDSのイベントを確認して、RDS起動時に最後に実行されているイベントのIDを記述する必要がありそうです。
イベントのIDを探す場合は以下の参考資料を確認してみてください。

参考資料:
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_Events.Messages.html

6. 動作確認

これで全ての設定が完了したため、Auroraを起動して自動で停止されるかどうか確認してみます。

起動をすると以下のような画面遷移で自動的にAuroraクラスターが停止されることが確認できました。

▼手動起動完了

▼自動で停止中

▼停止済みのステータス

以下はSystems Manager側でオートメーションで実行されたもの。

7. まとめ

以上でAuroraクラスターをLambdaを使用せずに自動で停止させる方法の検証ができました。
皆さんもLambdaを使用せずに軽くAuroraクラスターを自動停止したいといった時には使ってみるのもありかと思います。
最後までご覧いただきありがとうございます。