# AWS - EventBridge Scheduler Enum

{{#include ../../../banners/hacktricks-training.md}}

## EventBridge Scheduler

**Amazon EventBridge Scheduler** は、**タスクをスケールで作成、実行、管理するために設計された完全に管理されたサーバーレススケジューラー** です。これにより、270以上のAWSサービスと6,000以上のAPI操作にわたって数百万のタスクを中央サービスからスケジュールできます。組み込みの信頼性と管理するインフラストラクチャがないため、EventBridge Schedulerはスケジューリングを簡素化し、メンテナンスコストを削減し、需要に応じて自動的にスケールします。定期的なスケジュールのためにcronまたはレート式を設定し、一度限りの呼び出しを設定し、リトライオプションを持つ柔軟な配信ウィンドウを定義することで、下流ターゲットの可用性に基づいてタスクが確実に配信されるようにします。

地域ごとにアカウントあたり1,000,000スケジュールの初期制限があります。公式のクォーターページでも「完了した一度限りのスケジュールは削除することをお勧めします」と示唆しています。

### Types of Schedules

EventBridge Schedulerのスケジュールの種類：

1. **一度限りのスケジュール** – 特定の時間にタスクを実行します。例：12月21日午前7時UTC。
2. **レートベースのスケジュール** – 周期的なタスクを頻度に基づいて設定します。例：2時間ごと。
3. **Cronベースのスケジュール** – cron式を使用して周期的なタスクを設定します。例：毎週金曜日午後4時。

失敗したイベントを処理するための2つのメカニズム：

1. **リトライポリシー** – 失敗したイベントのリトライ試行回数と、失敗と見なす前に未処理のまま保持する時間を定義します。
2. **デッドレターキュー (DLQ)** – リトライが尽きた後に失敗したイベントが配信される標準のAmazon SQSキュー。DLQは、スケジュールやその下流ターゲットの問題をトラブルシューティングするのに役立ちます。

### Targets

スケジューラーには2種類のターゲットがあります [**テンプレート化された (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html)、これは一般的に使用され、AWSが設定を簡単にしました、そして [**ユニバーサル (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html)、これは任意のAWS APIを呼び出すために使用できます。

**テンプレート化されたターゲット**は以下のサービスをサポートしています：

- CodeBuild – StartBuild
- CodePipeline – StartPipelineExecution
- Amazon ECS – RunTask
- Parameters: EcsParameters
- EventBridge – PutEvents
- Parameters: EventBridgeParameters
- Amazon Inspector – StartAssessmentRun
- Kinesis – PutRecord
- Parameters: KinesisParameters
- Firehose – PutRecord
- Lambda – Invoke
- SageMaker – StartPipelineExecution
- Parameters: SageMakerPipelineParameters
- Amazon SNS – Publish
- Amazon SQS – SendMessage
- Parameters: SqsParameters
- Step Functions – StartExecution

### Enumeration
```bash
# List all EventBridge Scheduler schedules
aws scheduler list-schedules

# List all EventBridge Scheduler schedule groups
aws scheduler list-schedule-groups

# Describe a specific schedule to retrieve more details
aws scheduler get-schedule --name <schedule_name>

# Describe a specific schedule group
aws scheduler get-schedule-group --name <group_name>

# List tags for a specific schedule (helpful in identifying any custom tags or permissions)
aws scheduler list-tags-for-resource --resource-arn <schedule_group_arn>
```
### Privesc

以下のページでは、**eventbridgeスケジューラの権限を悪用して特権を昇格させる方法**を確認できます：

{{#ref}}
../aws-privilege-escalation/eventbridgescheduler-privesc/README.md
{{#endref}}

## References

- [https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html)

{{#include ../../../banners/hacktricks-training.md}}
