停止したのに自動復旧で損してる? 「Amazon RDS」のインスタンス管理を「AWS Systems Manager Automation」で自動化する方法:AWSチートシート
AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は「AWS Systems Manager Automation」と「Amazon EventBridge」を利用した「Amazon Relational Database Service」(RDS)のインスタンス停止方法を紹介します。
「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。以前、本連載の中で「AWS Systems Manager Automation」を利用した「リスクあるリソースの自動検知、自動修復」を紹介しました。今回は同じく運用時に便利なSystems Manager Automationと「Amazon EventBridge」を利用した「Amazon Relational Database Service」(RDS)のインスタンス停止方法を紹介します。
RDSのインスタンス管理について
RDSは停止していても7日間で自動で復旧し、インスタンスが起動します。しかし、自動で起動されると余計な料金がかかってしまい、困る場面も多々あります。かといって削除すると、毎回インスタンスを作成しなければならないので手間になります。
例えば、性能環境として用意していて、利用時のみ起動し、それ以外では停止し続けておきたい場合や、開発環境のために、日中のみ起動して夜間は停止したい場合などでSystems Manager AutomationとEventBridgeを利用したRDSのインスタンス管理を利用できます。
サービスの構築
今回はテスト用にRDSのインスタンスを自動で作成し、その後RDS停止のAutomationをEventBridgeで定期的に実行し、RDSインスタンスを停止し続けるように設定します。特にスクリプトなどを記載する必要はなく、コンソール上で設定を全て完結できます。
構築の手順は以下の通りです。
- RDSのインスタンス作成
- IAMの作成
- EventBridgeの作成
1.RDSのインスタンスの作成
テスト用に停止させるRDSのクラスタ、インスタンスを作成します。テスト用なので、デフォルトで作成します。「AWSマネジメントコンソール」にログインし、RDSダッシュボードから「データベースの作成」をクリックします。
遷移した画面で、次のように選択して「データベースの作成」を押します。
※今回、テスト用なので、簡単に作成しますが、現場で利用する際は可用性やセキュリティなどを考慮、検討して設定してください。
ステータスが「利用可能」になったら、本工程は完了です。
2.IAMの作成
次に、EventBridgeで利用する「AWS Identity and Access Management」(IAM)のロールを作成します。
AWSマネジメントコンソールにログインし、IAMダッシュボードから「ロール」→「ロールの作成」とクリックして遷移した画面で、次のように選択して「次へ」を押します。
今回必要なポリシーは「Amazon Aurora」、RDSの起動、停止に必要なポリシーのみなので、新しくポリシーを作成します。「ポリシーの作成」→「JSON」タブで次のようにJSONを設定します。
{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:StartAutomationExecution", "Effect": "Allow", "Resource": [ "arn:aws:ssm:【リージョン名】:*:automation-definition/AWS-StartStopAuroraCluster:$DEFAULT", "arn:aws:ssm:【リージョン名】::automation-definition/AWS-StopRdsInstance:$DEFAULT" ] }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:StopDBCluster", "rds:StopDBInstance", "rds:DescribeDBClusters" ], "Resource": [ "arn:aws:rds:*:【アカウントID】:cluster:*", "arn:aws:rds:*:【アカウントID】:db:*" ] } ] }
設定したら「次のステップ」→「次のステップ」を押します。
ポリシーの名前、説明を設定し、「ポリシーの作成」を押します。
ポリシーの作成が完了したら元のタブに戻り、IAMロールに先ほど作成したポリシーをアタッチして「次へ」を押します。
ロール名に任意の名前を入力します。今回は「rds-stop-sample-role」という名前で登録します。
ロールが作成されました。
このままだとEventBridge、RDSが信頼されていないので、カスタマイズします。ロールの一覧から先ほど作成したロール名→「信頼関係」→「信頼ポリシーを編集」を押します。
次のように編集し、「ポリシーを更新」を押します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "ssm.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
3. EventBridgeの作成
EventBridgeダッシュボードを開き「ルール」をクリック後に「ルールの作成」を押します。開いた画面で以下のように設定します。名前、説明については任意の値を設定します。今回のAPI名は「rds-stop-sample-rule」とします。
設定できたら「続行してルールを作成する」を押します。
テストで確認するために5分おきに実行されるスケジュールに設定します。運用する際は他の処理などと重複しない時間帯など、要件に応じた時間に「cron」を設定してください。設定したら「次へ」を押します。
次にターゲットを設定します。今回は、ここでSystems Manager Automationを設定します。以下のように設定し、「次へ」→「次へ」→「ルールの作成」を押します。
ターゲットに「Systems Manager Automation」、ドキュメントに「AWS-StopRdsInstance」を設定すると、自動でRDSを停止します。対象のインスタンスとして、先ほど作成したRDSのインスタンスID(今回は「rds-stop-sample-instance-1」)を入力し、実行ロールには先ほど作成したIAMロール「rds-stop-sample-role」を設定します。
ルールが作成されたら、構築は完了です。
動作確認
ルールが作成されたので、RDSが停止されるかどうかを確認します。RDSは作成時のままなので、「利用可能」状態です。
最初のEventBridgeが実行されました。
その後、RDSインスタンスが「停止中」に切り替わることを確認できました。
終わりに
今回はSystems Manager AutomationとEventBridgeを利用した、RDSインスタンスの停止方法を紹介しました。停止に関係するIAMポリシーとAutomationのドキュメントを変更することで定期起動も可能です。必要なときに、必要なものだけを起動する方法はAWSコスト管理の中でも重要になってきます。試してみてはいかがでしょうか。
筆者紹介
金光 適(かなみつ かなう)
株式会社システムシェアード システム開発事業部所属
最高の貢献を最高の仲間と届けることをミッションに普段はWebアプリケーションの開発を実施。API基盤開発、「AWS IoT Core」を利用した基盤構築とIoT機器から収集したデータを利用した機械学習によるレコメンドシステム開発、VM環境からAWS環境へのリプレースやAWS環境上で実施する性能試験など先端技術を用いた開発に従事。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- DatadogがAWS向け「クラウドコストマネジメント」を提供開始 支出の変化や原因を指標化可能に
日本のユーザーにとって初めて触れることになる(と思われる)新ベンダーや新製品を紹介する本連載。第1回はクラウドコンピューティング向けの監視サービスを提供するDatadogが提供を開始した、クラウドの使用料と監視データを関連付けできる新製品「クラウドコストマネジメント」について紹介する。 - 「急激な円安で心の休まらない日々」――NewsPicksのSREが明かす、AWSコスト20%削減術
2022年10月8日、AWSユーザーグループ「JAWS-UG」が主催する勉強会「JAWS DAYS 2022」がオンラインと全国各地のリアル会場で開催された。本稿では、ニューズピックス SREチームの安藤裕紀氏による講演内容を要約してお伝えする。 - 円安で無視できないAWSコスト増、AWSジャパンが説明する「こうすれば安くなります」
2022年9月16日、AWSジャパンは「今だからこそ考える最適なクラウド活用」というテーマで記者説明会を開催した。円安で利用コスト増への対策として「Cloud Financial Management」や「Savings Plans」などの活用方法を説明した。