CDKでRDSの起動・停止を自動化!EventBridgeスケジューラーとStep Functionsステートマシーンを活用した効率的な管理
AWS CDKを使ってRDSのクラスターやDBインスタンスを指定のタイミングで起動・停止し、その結果をメール通知する仕組みを構築しました。本記事では、構築したCDKスタックのポイントを解説します。
ユースケース概要
-
タグによる対象リソースの特定
指定したタグをもとに、管理対象のRDSクラスターやDBインスタンスを検索します。 -
リソースの起動・停止の自動化
EventBridgeスケジューラーを活用して、定期的に起動や停止を実行します。 -
操作結果の通知
操作が成功した際にはSNSトピックを通じてメールで通知を行います。ただし、問題が発生した場合のメール送信には未対応です。
ステートマシーンの図
以下に、実装したステートマシーンのフロー図を追加予定です。この図では、RDSリソースの検索、起動・停止、SNS通知の流れを視覚的に確認できます。
CDKスタックの構成
このスタックは下記の要素で構成されています。
-
タグを利用したRDSリソースの検索
ResourceGroupsTaggingAPI
を使用し、指定のタグが付与されたRDSクラスターやDBインスタンスを動的に取得します。 -
EventBridgeスケジューラーによる起動・停止
EventBridgeスケジューラーを使用して、指定の時間に自動的に起動や停止を実行するタスクをスケジュールします。 -
SNSを利用したメール通知
SNSトピックを作成し、正常に起動または停止が完了した場合にメールで通知を行います。
実装のポイントと注意点
-
タグ管理の徹底
適切なタグ付けが前提となるため、環境ごとに一貫性のあるタグルールを適用してください。 -
EventBridgeスケジューラーの活用
複数のスケジュールを柔軟に設定することで、リソースの動作時間を最適化できます。 -
通知の活用
問題が発生した場合に早期に対応できるよう、メール通知の設定を確認してください。ただし、現時点では問題発生時のメール送信には未対応であるため、手動での確認や別途通知手段の検討が必要です。
公開しているリソースについて
このコンストラクタスタックは、以下で公開しています。詳細なコードや利用方法は、こちらからご確認いただけます。
おわりに
この仕組みを導入することで、手動でRDSリソースを管理する手間を省きつつ、コスト最適化も実現できます。AWS CDKを使えば、インフラ管理の自動化がさらに簡単に行えるので、是非活用してみてください!
Discussion