Migrate from AWS EventBridge Scheduler
Move EventBridge Scheduler schedules that call HTTP endpoints to SteadyCron — list schedules with the AWS CLI, convert the cron expressions, and drop the IAM wiring.
EventBridge Scheduler is the right tool when a schedule triggers AWS resources. When all a schedule does is call an HTTP endpoint, you’re maintaining IAM roles, API destinations, connections, and dead-letter queues for what is conceptually one line of YAML. SteadyCron replaces that wiring with a monitored HTTP job — retries, timeout enforcement, alerts, and an execution log included, hosted in the EU.
1. List your schedules
aws scheduler list-schedules --output table
aws scheduler get-schedule --name nightly-report
For each schedule that targets an API destination (an HTTP endpoint), note the URL, method, headers, the schedule expression, and the timezone.
2. Convert the schedule expression
EventBridge uses six-field cron with ? and rate expressions; SteadyCron uses standard
five-field cron or a plain interval in seconds:
| EventBridge | SteadyCron |
|---|---|
cron(0 2 * * ? *) | schedule: "0 2 * * *" |
cron(*/15 * * * ? *) | schedule: "*/15 * * * *" |
rate(10 minutes) | interval: 600 |
rate(1 hour) | schedule: "0 * * * *" or interval: 3600 |
(Drop the seconds/year fields and replace ? with *.)
3. Recreate each schedule as an HTTP job
jobs:
- id: nightly-report
name: Nightly report
kind: http
method: POST
url: https://app.example.com/tasks/nightly-report
schedule: "0 2 * * *"
timezone: Europe/Berlin
retries: 3
headers:
Authorization: Bearer ${CRON_SECRET} # resolved from --env-file at apply time
steadycron validate steadycron.yaml
steadycron apply steadycron.yaml --env-file secrets.env --namespace prod
The auth header replaces the EventBridge connection credentials; retries replace the
RetryPolicy; the execution log replaces CloudWatch spelunking.
4. Run both in parallel, then clean up
Once SteadyCron shows green runs, disable the EventBridge schedule
(aws scheduler update-schedule --state DISABLED …), then delete the schedule, the API
destination, the connection, and the now-unused IAM role.
What you gain
| EventBridge Scheduler | SteadyCron | |
|---|---|---|
| Setup for one HTTP job | Schedule + API destination + connection + IAM role | One YAML block |
| Retries | RetryPolicy (config per schedule) | Per-job, exponential backoff |
| Failure visibility | CloudWatch metrics/logs | Execution log + alerts (email, Slack, Discord, Telegram, webhook) |
| Heartbeat monitoring | No | Yes |
| Config as code | CloudFormation/Terraform (verbose) | YAML manifest or official Terraform provider |
| Hosting | Your AWS region | EU (GDPR-native, signed DPA) |
Next steps
- HTTP jobs — request builder, retries, timeouts
- YAML & CLI — full manifest workflow
- Terraform provider — if you’d rather stay in HCL