EventBridge Scheduler のスケジュールグループ機能の活用を考える

記事タイトルとURLをコピーする

こんにちは😸
カスタマーサクセス部の山本です。

EventBridge Scheduler のスケジュールグループ機能

EventBridge Scheduler にはグループ化の機能が存在しており、様々なスケジュールを分類して整理することが可能です。 利用開始時には default というグループが一つ存在しており、スケジュール作成時にはグループを指定するようになっています。

ご参考:EventBridge スケジューラでのスケジュールグループの管理 - EventBridge スケジューラ

スケジュールグループの利用目的は以下となるようです。

  • スケジュールグループごとの CloudWatch メトリクスの集計と監視
    • スケジュールグループごとに 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のスケジュールグループ機能について、以下の主要な特徴と活用方法が明らかになりました:

  1. CloudWatchメトリクスの集計と監視

    • スケジュールグループ単位でメトリクスを集計可能
    • グループごとにCloudWatchアラームを設定できる
    • 失敗通知が必要なスケジュールを特定のグループにまとめて監視する運用が効果的
  2. スケジュール管理の効率化

    • グループ単位での一括削除が可能
    • ただし、グループは作成後に変更不可
    • defaultグループは削除不可
  3. タグベースの管理

    • スケジュールグループにタグ付けが可能(個別スケジュールには不可)
    • コスト管理での活用が可能
    • タグベースのアクセス制御(ABAC)により、特定環境のスケジュール管理権限を制御可能

これらの機能を活用することで、大規模な環境でもスケジュールジョブを効率的に管理・監視することができます。

余談

そろそろ黒部五郎岳に行きたい気分です。

黒部五郎岳

山本 哲也 (記事一覧)

カスタマーサクセス部のインフラエンジニア。

山を走るのが趣味です。