Issue with EventBridge rule for aws.events
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
When an EventBridge rule does not fire as expected, the first thing to verify is the actual event shape. The value aws.events is used for EventBridge-generated events such as scheduled events, but many service-originated AWS events use a different source value such as aws.ec2, aws.s3, or another service namespace.
Understand What aws.events Matches
EventBridge rules match JSON events based on an event pattern. If your pattern includes:
it will only match events whose source is literally aws.events.
That is appropriate for EventBridge-generated scheduled events. A typical scheduled event looks like this:
If your real event comes from an AWS service or a custom publisher, source will often be something else entirely.
Match the Actual Event, Not the One You Expect
The most common failure is building the rule from memory instead of from a captured example event. Before changing the rule, inspect the event in CloudWatch logs, the EventBridge sandbox, or a temporary target such as Lambda.
For a scheduled rule, this pattern is a correct minimal start:
For a custom application event sent with PutEvents, the pattern might need something like:
These are completely different rule targets even though both travel through EventBridge.
EventBridge Rules Versus EventBridge Scheduler
There is another source of confusion: EventBridge scheduled rules and EventBridge Scheduler are related but not identical features. Scheduled rules emit EventBridge events with source equal to aws.events. EventBridge Scheduler is a newer scheduling service with its own model and broader target support.
If you are troubleshooting a modern schedule configuration, verify whether you created an EventBridge rule or an EventBridge Scheduler schedule. Treating them as interchangeable can lead you to debug the wrong object entirely.
Check the Event Bus and Permissions
A correct pattern still will not fire if the event is published to a different bus than the rule is listening on. Make sure the producer sends to the expected event bus and the rule is attached to that same bus.
Then check target permissions. For example, if the target is Lambda, the function must allow EventBridge to invoke it. A missing target permission can look like "the rule did not work" when the real problem is downstream invocation failure.
Use Narrow Patterns Carefully
It is tempting to add many fields such as detail, resources, or account to make the rule precise. That is fine, but every extra field increases the chance of mismatch. Start with the smallest pattern that should match, verify delivery, and then tighten it.
This is especially important for scheduled events, whose detail object is usually empty. Matching on non-existent detail keys will silently exclude the event.
Common Pitfalls
Using source: aws.events for service-originated events from S3, EC2, or other AWS services will not match because their source values are service-specific.
Matching the wrong bus is easy in multi-bus setups. A correct rule on the wrong bus still sees nothing.
Assuming EventBridge Scheduler behaves exactly like scheduled rules can send debugging in the wrong direction.
Adding detail filters to scheduled events often breaks matching because scheduled events usually have an empty detail object.
Ignoring target permissions can make a matched event look like a non-matched event if delivery to the target fails afterward.
Summary
- '
aws.eventsmatches EventBridge-generated events such as scheduled-rule events.' - Many AWS service events use different
sourcevalues, so always inspect the real event first. - Start with a minimal event pattern, then tighten it once delivery is confirmed.
- Verify the event bus and target permissions in addition to the rule pattern.
- Distinguish between EventBridge scheduled rules and EventBridge Scheduler when troubleshooting.
Related reading
- Issues with stability with Kubernetes cluster before adding networking
- Java 11 on AWS beanstalk for Spring boot project
- Javascript to download a file from amazon s3 bucket?
- K8S Error running load balancer syncing routine
- issue with Ingress and OAuth2 Proxy error 500
- Issue with virtualenv - cannot activate
- Kafka + AWS lambda
- Kafka AWS lambda

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.