こんにちは😸
カスタマーサクセス部の山本です。
- EventBridge Scheduler のスケジュールグループ機能
- スケジュールグループごとの CloudWatch メトリクスの集計と監視
- スケジュールの一括削除
- 環境名・システム名などのタグ付与
- まとめ
- 余談
EventBridge Scheduler のスケジュールグループ機能
EventBridge Scheduler にはグループ化の機能が存在しており、様々なスケジュールを分類して整理することが可能です。
利用開始時には default というグループが一つ存在しており、スケジュール作成時にはグループを指定するようになっています。
ご参考:EventBridge スケジューラでのスケジュールグループの管理 - EventBridge スケジューラ
スケジュールグループの利用目的は以下となるようです。
- スケジュールグループごとの CloudWatch メトリクスの集計と監視
- スケジュールグループごとに CloudWatchメトリクスを集計できるため、CloudWatch Alarm を使用した監視を行うことが可能
- スケジュールごとにメトリクスは集計されず、スケジュールグループごとに記録される
- スケジュールグループごとに CloudWatchメトリクスを集計できるため、CloudWatch Alarm を使用した監視を行うことが可能
- 複数のスケジュールの一括削除
- スケジュールグループを削除すると、グループ内の各スケジュールを一括で削除することが可能
- 環境名・システム名などのタグ付与
- 各スケジュールにはタグを付与できない。スケジュールグループには環境名などのタグを付与することが可能
- タグベースのアクセス制御(ABAC)や請求 (billing) の分析が可能
- 各スケジュールにはタグを付与できない。スケジュールグループには環境名などのタグを付与することが可能
それぞれ確認していきましょう。
スケジュールグループごとの CloudWatch メトリクスの集計と監視
スケジュールグループごとに「Monitoring」タブにダッシュボードを用意しています。

View the metrics in CloudWatch のリンクにアクセスすると、CloudWatch メトリクスを確認できます。

メトリクスが EventBridge のスケジュールグループごとに集計されています。
公式ドキュメント的な言い方をすると、スケジュールグループの「ディメンション」があります。
メトリクスは EventBridge スケジュールが API 呼び出しを試みたメトリクス InvocationAttemptCount が出ていました。

メトリクスを指定した後に、さらにスケジュールグループ名を指定してアラームを作成することができます。

アラーム通知したいメトリクスは、以下のようなものがあるでしょう。
実行に失敗した時ですね。
「失敗時に通知が必要なスケジュールを特定のスケジュールグループに入れて、アラームを作る」といった運用が良さそうですね。
| 名前空間 | メトリクス | 単位 | 説明 |
|---|---|---|---|
| AWS/Scheduler | TargetErrorCount | カウント | EventBridge スケジューラがターゲット API を呼び出した後にターゲットが例外を返したときに発生します。これを使用して、ターゲットへの配信がいつ失敗したかを確認します。 |
| AWS/Scheduler | TargetErrorThrottledCount | カウント | ターゲットによる API スロットリングによりターゲットの呼び出しが失敗した場合に発生します。EventBridge スケジューラによるターゲット API スロットリング呼び出しが根本的な原因である場合に、これを使用して配信障害を診断します。 |
| AWS/Scheduler | InvocationThrottleCount | カウント | EventBridge スケジューラによって設定されたサービスクォータを超過したために、EventBridge スケジューラがターゲットの呼び出しを抑制したときに発生します。これを使用して、呼び出しスロットリング制限クォータをいつ超過したかを判断します。サービスクォータの詳細については、「Amazon EventBridge スケジューラのクォータ」を参照してください。 |
| AWS/Scheduler | InvocationDroppedCount | カウント | スケジュールの再試行ポリシーが使い果たされた後に、EventBridge スケジューラがターゲットを呼び出す試みを停止したときに発生します。再試行ポリシーの詳細については、「EventBridge スケジューラ API リファレンス」の「RetryPolicy」を参照してください。 |
参考:Amazon CloudWatch による Amazon EventBridge スケジューラのモニタリング「メトリクスの一覧」
スケジュールの一括削除
スケジュール作成時に選択したスケジュールグループは後から変更できません。最初に適切なグループに入れておくか、再作成する必要があります。

また default グループは削除できません。 一括削除を想定するなら、default グループに入れるのは避けた方がいい場合もありそうですね。

スケジュールグループを削除してみます。


スケジュールグループを削除すると、中のスケジュールもすべて消えました。
スケジュールグループの削除は慎重に行う必要がありそうです。
Before

After

環境名・システム名などのタグ付与
スケジュールグループにはタグを付与できます。
スケジュールの作成時に以下のような注意書きもあります。
タグは、スケジュールグループにのみ追加でき、スケジュールには追加できません。

スケジュールグループの作成時にタグを付与してみます。

タグ付与できました。作成後に追加・削除も可能です。

EventBridge Scheduler の呼び出しはわずかに料金が発生するため、タグを付与しておくことで請求コンソールから明細を確認できます。
スケジューラー呼び出し 月間無料起動回数 1400 万回後の月間スケジュール起動回数 100 万回あたり USD 1.25
ご参考:料金 - Amazon EventBridge | AWS
タグベースの権限付与(ABAC)
タグに基づいてアクセスを管理するには、aws:ResourceTag/key-name、aws:RequestTag/key-name、または aws:TagKeys の条件キーを使用して、ポリシーの 条件要素でタグ情報を提供します。
ご参考:EventBridge スケジューラが IAM と連動する方法 - EventBridge スケジューラ
IAM ユーザーに、以下のタグを付与したスケジュールグループのスケジュールのみ編集する権限を付与してみました。
- キー:
Environment - 値:
Production
List* アクションはタグでの制御に対応していないようでした。
スケジュールの編集時に iam:PassRole の権限が必要でしたので、少しラフに付与しています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "scheduler:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Environment": "Production" } } }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "iam:PassRole", "scheduler:List*" ], "Resource": "*" } ] }
上の権限では、スケジュールやスケジュールグループの一覧は参照することができます。


しかし、対象のタグが付いていないスケジュールやスケジュールグループの詳細は閲覧不可でした。


対象のタグが付いているスケジュールは編集することができます。

まとめ
EventBridge Schedulerのスケジュールグループ機能について、以下の主要な特徴と活用方法が明らかになりました:
CloudWatchメトリクスの集計と監視
- スケジュールグループ単位でメトリクスを集計可能
- グループごとにCloudWatchアラームを設定できる
- 失敗通知が必要なスケジュールを特定のグループにまとめて監視する運用が効果的
スケジュール管理の効率化
- グループ単位での一括削除が可能
- ただし、グループは作成後に変更不可
- defaultグループは削除不可
タグベースの管理
- スケジュールグループにタグ付けが可能(個別スケジュールには不可)
- コスト管理での活用が可能
- タグベースのアクセス制御(ABAC)により、特定環境のスケジュール管理権限を制御可能
これらの機能を活用することで、大規模な環境でもスケジュールジョブを効率的に管理・監視することができます。
余談
そろそろ黒部五郎岳に行きたい気分です。
