| name | eventbridge |
| description | Manage Amazon EventBridge event buses, rules, targets, schedules, and event replay via AWS CLI. |
| metadata | {"openclaw":{"emoji":"🚌","requires":{"bins":["aws"]}}} |
Amazon EventBridge
Use this skill for event-driven architecture: creating and managing event buses, defining rules and targets, scheduling events, managing schemas, and replaying archived events.
Prerequisites
- AWS CLI v2 configured with valid credentials
- IAM permissions:
events:*, scheduler:* for full access, or scoped policies for specific operations
- Target services (Lambda, SQS, SNS, etc.) must have resource-based policies allowing EventBridge invocation
Common Operations
List and Inspect (Read-Only)
aws events list-event-buses --output table
aws events list-rules --output table
aws events list-rules --event-bus-name <bus-name> --output table
aws events describe-rule --name <rule-name>
aws events list-targets-by-rule --rule <rule-name>
aws events list-archives --output table
aws events list-replays --output table
aws events list-connections --output table
aws events list-api-destinations --output table
aws scheduler list-schedules --output table
aws scheduler get-schedule --name <schedule-name>
aws schemas list-registries --output table
aws schemas search-schemas --registry-name discovered-schemas --keywords <keyword>
Create Rules and Targets
⚠️ Cost note: EventBridge charges $1.00 per million custom events published. AWS service events are free. Scheduler: $1.00 per million invocations.
aws events create-event-bus --name <bus-name>
aws events put-rule \
--name <rule-name> \
--event-pattern '{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {"state": ["stopped", "terminated"]}
}' \
--state ENABLED \
--description "Notify on EC2 stop/terminate"
aws events put-rule \
--name <rule-name> \
--schedule-expression "rate(5 minutes)" \
--state ENABLED
aws events put-rule \
--name <rule-name> \
--schedule-expression "cron(0 9 * * ? *)" \
--state ENABLED \
--description "Run daily at 9 AM UTC"
aws events put-targets \
--rule <rule-name> \
--targets '[{
"Id": "1",
"Arn": "<lambda-function-arn>"
}]'
aws events put-targets \
--rule <rule-name> \
--targets '[{
"Id": "1",
"Arn": "<sqs-queue-arn>",
"InputTransformer": {
"InputPathsMap": {"instance": "$.detail.instance-id", "state": "$.detail.state"},
"InputTemplate": "\"Instance <instance> changed to <state>\""
}
}]'
aws scheduler create-schedule \
--name <schedule-name> \
--schedule-expression "at(2024-12-31T23:59:00)" \
--target '{"Arn": "<lambda-arn>", "RoleArn": "<role-arn>", "Input": "{}"}' \
--flexible-time-window '{"Mode": "OFF"}'
aws scheduler create-schedule \
--name <schedule-name> \
--schedule-expression "rate(1 hour)" \
--target '{"Arn": "<lambda-arn>", "RoleArn": "<role-arn>"}' \
--flexible-time-window '{"Mode": "FLEXIBLE", "MaximumWindowInMinutes": 15}'
Enable / Disable Rules
aws events disable-rule --name <rule-name>
aws events enable-rule --name <rule-name>
Archive and Replay
aws events create-archive \
--archive-name <archive-name> \
--source-arn <event-bus-arn> \
--retention-days 90
aws events start-replay \
--replay-name <replay-name> \
--event-source-arn <archive-arn> \
--destination '{"Arn": "<event-bus-arn>"}' \
--event-start-time "2024-01-01T00:00:00Z" \
--event-end-time "2024-01-02T00:00:00Z"
Send Events
aws events put-events \
--entries '[{
"Source": "my.application",
"DetailType": "OrderPlaced",
"Detail": "{\"orderId\": \"12345\", \"amount\": 99.99}",
"EventBusName": "default"
}]'
aws events put-events \
--entries '[
{"Source": "my.app", "DetailType": "Event1", "Detail": "{}", "EventBusName": "default"},
{"Source": "my.app", "DetailType": "Event2", "Detail": "{}", "EventBusName": "default"}
]'
Delete / Destructive
🛑 DESTRUCTIVE — Always confirm with the user before executing any of these commands.
aws events remove-targets --rule <rule-name> --ids "1" "2"
aws events delete-rule --name <rule-name>
aws events delete-event-bus --name <bus-name>
aws events delete-archive --archive-name <archive-name>
aws scheduler delete-schedule --name <schedule-name>
Safety Rules
- NEVER delete rules or event buses without explicit user confirmation.
- NEVER expose or log AWS credentials, access keys, or secret keys.
- ALWAYS confirm the target event bus and region before write operations.
- ALWAYS warn that deleting a rule requires removing all targets first.
- WARN about event replay costs — replayed events are charged as custom events.
- WARN that disabling a rule stops event delivery but does not delete it.
Best Practices
- Use custom event buses to isolate application events from AWS service events.
- Use dead-letter queues on targets to capture failed event deliveries.
- Use input transformers to send only relevant data to targets.
- Archive events for replay and debugging — set appropriate retention periods.
- Use EventBridge Scheduler instead of CloudWatch Events cron for new scheduled tasks.
Common Patterns
Pattern: Fan-Out Event to Multiple Targets
aws events put-rule \
--name order-events \
--event-pattern '{"source": ["my.orders"], "detail-type": ["OrderPlaced"]}'
aws events put-targets \
--rule order-events \
--targets '[
{"Id": "notify", "Arn": "<sns-topic-arn>"},
{"Id": "process", "Arn": "<lambda-arn>"},
{"Id": "audit", "Arn": "<sqs-queue-arn>"}
]'
Pattern: Cross-Account Event Forwarding
aws events put-permission \
--event-bus-name default \
--action events:PutEvents \
--principal <target-account-id> \
--statement-id "AllowCrossAccount"
Pattern: Debug with Test Events
aws events put-events \
--entries '[{
"Source": "debug.test",
"DetailType": "TestEvent",
"Detail": "{\"test\": true}",
"EventBusName": "default"
}]'
aws events describe-rule --name <rule-name> \
--query '{State: State, EventPattern: EventPattern}'
Troubleshooting
| Error | Cause | Fix |
|---|
ResourceNotFoundException | Rule or bus doesn't exist | Verify name and region; check list-rules |
| Events not triggering target | Event pattern mismatch | Test pattern with aws events test-event-pattern |
ManagedRuleException | Trying to modify AWS-managed rule | AWS-managed rules can't be edited or deleted |
| Target invocation failing | Missing resource-based policy on target | Add permission for events.amazonaws.com to invoke the target |
ValidationException on schedule | Invalid cron/rate expression | Check schedule expression syntax |
| Duplicate events delivered | At-least-once delivery | Design targets to be idempotent |