EventBridge pattern tester
Test EventBridge event patterns against events and see why each field matches or not — exact values, prefix and suffix (with equals-ignore-case), every anything-but form, numeric ranges, exists, IP CIDR, wildcards, $or and array semantics, following the AWS content-filtering rules — plus input transformers (InputPathsMap and InputTemplate) and a library of sample events.
Added
How to use it
An EventBridge rule either fires or it doesn’t, and the console’s sandbox tells you which but
not why. This page evaluates the pattern field by field, says which matcher matched which value
(or why none did), checks the pattern the way PutRule would, and shows what an input
transformer would send to the target.
How to use it
-
Pick a sample event — S3 Object Created, an EC2 state change, a CodePipeline execution state change, a scheduled event, an AWS API call via CloudTrail, or a custom application event — or paste your own (Open file… loads one). Each sample comes with a pattern and a transformer that exercise different operators.
-
Edit the Event pattern. The verdict updates as you type; Why — field by field lists every leaf of the pattern with the event’s value and each matcher’s result:
"uploads/…PNG" ends with ".png" (ignoring case),"10.0.4.27" starts with the excluded "10.",5 > 0 and 5 ⇐ 5. Nested$oralternatives and objects inside arrays are shown as groups. -
Pattern problems lists what EventBridge would reject (a value that isn’t an array, an empty array, unknown operators, a bad CIDR,
**in a wildcard, mixed anything-but lists, more than 1,000$orcombinations, numbers beyond ±253) and warnings (a key given twice — only the last counts — and operators that work on event buses but not in Pipes filters). -
This pattern against every sample event shows which of the samples it would route — a quick check that a rule isn’t broader than you meant. Click one to load that event and keep your pattern.
-
Under Input transformer, give
InputPathsMap(name → JSON path) and anInputTemplate. The output shows exactly what the target would receive, whether it’s valid JSON, and warnings for paths that aren’t in the event.
The matching rules
These follow the EventBridge User Guide’s pages on event patterns, comparison operators, arrays, and null values (read October 2026), and AWS’s open-source matching engine, Event Ruler, where the guide is silent:
-
Each leaf in a pattern is a list; the field matches if any entry matches. If the event’s value is an array, it matches if any element matches.
-
Objects inside an array are matched one element at a time: two fields of one pattern object must be satisfied by the same element.
-
existsonly sees leaf values — a field that holds an object counts as absent. A missing field matches nothing except{"exists": false}, soanything-butneeds the field to be present. -
prefix,suffix,equals-ignore-caseandwildcardonly match strings;numericonly JSON numbers (not numeric strings), compared as doubles within ±253;nulland""are different values. -
$ortakes an array of at least two objects; anything else is an ordinary field called$or.
Input transformers follow the guide’s input transformation page: strings get quotes added when
the placeholder is outside a JSON string and go in raw inside one, objects and arrays go in as
JSON (losing their inner quotes inside a string), nothing is escaped, a path that isn’t in the
event creates no variable, and the predefined <aws.events.rule-arn>, <aws.events.rule-name>,
<aws.events.event.ingestion-time>, <aws.events.event> (without detail) and
<aws.events.event.json> are available. The tests reproduce every row of the guide’s template
table.
To start a workflow from a rule, try its input on the Step Functions workbench; for costs of buses and fan-out see serverless sizing and the AWS architecture builder. Lambda event-source filters on SQS, Kinesis and DynamoDB streams use the same pattern syntax (with the Pipes subset of operators).
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.