Amazon EventBridge Schedule を用いた時間指定による Amazon CloudWatch アラームアクションを停止してみる
EventBridge Scheduler について
EventBridge に Scheduler 機能が追加されました。
様々なAWSサービスのAPIを EventBridge Scheduler を用いて実行することが可能になりました。
Amazon EventBridge が新しいスケジューラを起動
>本日、Amazon EventBridge Scheduler をリリースできることを嬉しく思います。開発者がスケジュールされたタスクを大規模に簡単に作成、実行、管理できるようにすることで、現在のスケジューリング機能を拡張します。
以前、Cold-Airflowさんの記事にて、EventBridge の Scheduler 機能を用いたEC2の定期停止について紹介されておりましたが、今回は CludWatch アラーム のアクション有効・無効の仕組みを、EventBridge の Scheduler 機能を用いて実装してみたいと思います。
CloudWatch アラームの運用上の課題
今までは、アラームを設定した機器のメンテナンスを実施する際、CloudWatch アラーム のアクションはAPIやCLI、コンソールにて無効にし、メンテナンスが終了後、アクションを有効にするというように、手動で有効・無効の作業を行う必要がありました。
また、決められたスケジュールで有効・無効を行う場合は、Lambda等のサービスを用いて行わなければならず、導入するハードルが高い印象がありました。
今回の EventBridge のアップデートで、一時的もしくは定期的にAPIを呼び出すことが可能になったことで、上記作業を全て EventBridgeで完結することが可能になりました。
やってみた
今回は既に設定済みの CloudWatch アラーム を利用し、アクションの有効・無効を実施したいと思います。
上記 EC2 ・ CloudWatch アラームの設定は割愛します。
IAMロールの作成
事前に EventBridge Scheduler で利用するIAMロールを作成します。
「CloudWatchFullAccess」に加え、以下の AssumeRole をアタッチします。
作成したIAMロールは、 EventBridge Scheduler を作成時に選択します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注意点は、Service名が EventBridge と EventBridge Scheduler で異なることです。
EventBridge は “events.amazonaws.com” 、EventBridge Scheduler は “scheduler.amazonaws.com” を選択しないと動作しないため、正しく選択しましょう。
スケジュールの作成
次にスケジュールの作成ですが、コンソールにて作成していきます。
「スケジュール名」や「説明」は任意の値を入力し、「スケジュールグループ」は「default」を選択します。
「頻度」については、今回は検証のため「1回切りのスケジュール」を選択します。
もちろん、「定期的なスケジュール」を選択することで、「cronベース」や「rateベース」のスケジュールを作成することが可能ですので、定期的にアラームを有効・無効にしたい場合に利用しましょう。
「日付と時刻」にAPIを実行する日時を入力し、「フレックスタイムウィンドウ」は「オフ」を選択したら「次へ」を選択します。
次に「ターゲット」を選択します。
アクションを無効にする場合は「DisableAlarmActions」を、有効にする場合は「EnableAlarmActions」を選択してください。今回はアクションを無効にするため「DisableAlarmActions」を選択します。
API を選択した状態でしたにスクロールすると、JSON 形式でアラーム名が指定可能です。
今回は、事前に準備した CloudWatch アラーム のアラーム名を入力します。
最後に、「アクセス許可」にて事前に作成したIAMロールを選択し、作成が完了です。
IAMロール以外はデフォルトのままとしていますが、「スケジュールの状態」や「再試行ポリシー」、「暗号化」等の選択も可能ですので、要件に併せて設定を変更してください。
あとは、指定した時間になったら CloudWatch アラーム のアクションが無効になっているかを確認します。
停止時間
指定した時間になったので、コンソールと CloudTrail で確認します。
まずはコンソールです。以下のように指定した CloudWatch アラーム のアクションが無効になっています。
次に CloudTrail ですが、下記の通り問題なく実行されたことが確認できます。
"eventTime": "2022-12-13T09:17:29Z", "eventSource": "monitoring.amazonaws.com", "eventName": "DisableAlarmActions", "awsRegion": "ap-northeast-1", "sourceIPAddress": "54.150.111.13", "userAgent": "AmazonEventBridgeScheduler, aws-sdk-java/2.18.29 Linux/4.14.294-220.533.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/11.0.17+11-LTS Java/11.0.17 kotlin/1.3.72-release-468 (1.3.72) vendor/Amazon.com_Inc. md/internal exec-env/AWS_ECS_FARGATE io/async http/NettyNio cfg/retry-mode/legacy", "requestParameters": { "alarmNames": [ "Monitoring-Test-Alarm" ] },
まとめ
今回は EventBridge Scheduler を用いて CludWatch アラーム のアクション有効・無効についてご紹介しました。
EventBridge Scheduler の登場により、 CloudWatch を今よりも運用しやすくなったかと思います。
もちろん、EventBridge Scheduler は EC2 や CloudWatch 以外にも様々なサービスのAPIを利用することが可能ですので、現在の運用を見直す切っ掛けにしてみてはいかがでしょうか。
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterサーバサイドエンジニア。IaCやCI/CDに対し日々奮闘中。健康のためにジムに通いたいと思い続け3年が経過しました。
Recommends
こちらもおすすめ
-
AWS Chatbotを使って、Slack通知をカスタマイズする
2024.2.15
-
AWS 最新情報をキャッチアップし続ける方法
2023.12.20
-
AWSサービスをTerraformでコード化する:AWS Chatbot編
2024.3.11
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16