Amazon EventBridge
Create rules with SQS targets and put events that are delivered to those queues.
Plan: Pro57 of 57 operations implemented7Known differences
Event patterns did not filter delivery, and a rule still delivered after DisableRule succeeded.
Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.
Connect
Section titled “Connect”Activate your license key and start the emulator with the Vera launcher, as in Activate Pro, then run this in a terminal of its own, from an empty scratch directory. It gives the official AWS CLI dummy credentials and a config file of its own, so no AWS account is needed and your own AWS profile isn't touched.
export VERA_ENDPOINT="http://localhost:5003"export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=testexport AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1export AWS_SHARED_CREDENTIALS_FILE=/dev/nullexport AWS_EC2_METADATA_DISABLED=trueexport AWS_PAGER="" AWS_CLI_AUTO_PROMPT=offunset AWS_PROFILE AWS_DEFAULT_PROFILEunset AWS_SESSION_TOKEN AWS_SECURITY_TOKENunset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAMEunset AWS_CONTAINER_CREDENTIALS_FULL_URIunset AWS_CONTAINER_CREDENTIALS_RELATIVE_URIcat > vera-aws-config <<'EOF'[default]region = us-east-1output = jsoncli_binary_format = base64s3 = addressing_style = pathEOFexport AWS_CONFIG_FILE="$PWD/vera-aws-config"When you've finished every example in this terminal, close it and delete vera-aws-config, not before.
Use the AWS CLI’s events commands. The emulator serves the 2015-10-07 API over the AWS JSON protocol. This page covers rules and event buses; EventBridge Scheduler is a separate service with its own page. The example also uses sqs commands for the target queue.
Rules and targets name their resources by ARN in your instance’s account, such as arn:aws:events:us-east-1:123456789012:rule/vera-docs-rule. The example names its SQS target by the queue ARN that SQS returns, rather than writing one out.
Example
Section titled “Example”Create a queue and look up its ARN, then a rule that matches events from docs.orders and a target that sends them to the queue. Then put a matching event and receive it from the queue.
QUEUE_URL=$(aws --endpoint-url "$VERA_ENDPOINT" sqs create-queue \ --queue-name vera-docs-events-target --query QueueUrl --output text)QUEUE_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" sqs get-queue-attributes \ --queue-url "$QUEUE_URL" --attribute-names QueueArn \ --query Attributes.QueueArn --output text)aws --endpoint-url "$VERA_ENDPOINT" events put-rule --name vera-docs-rule \ --event-pattern '{"source": ["docs.orders"]}' --state ENABLEDaws --endpoint-url "$VERA_ENDPOINT" events put-targets --rule vera-docs-rule \ --targets "[{\"Id\": \"docs-queue\", \"Arn\": \"$QUEUE_ARN\"}]"aws --endpoint-url "$VERA_ENDPOINT" events put-events \ --entries '[{"Source": "docs.orders", "DetailType": "Documentation event", "Detail": "{\"domain\": \"example.net\", \"match\": true}"}]'aws --endpoint-url "$VERA_ENDPOINT" sqs receive-message \ --queue-url "$QUEUE_URL" --wait-time-seconds 0put-events returns an EventId for the event. The queue then receives the event as an EventBridge-style envelope in the message body. Its detail arrives as a JSON string, not an object, and the delivered envelope has no id or time. These are selected fields; the MessageId and ReceiptHandle differ on every run.
{ "Messages": [ { "Body": "{\"version\": \"0\", \"detail-type\": \"Documentation event\", \"source\": \"docs.orders\", \"account\": \"123456789012\", \"region\": \"us-east-1\", \"resources\": [], \"detail\": \"{\\\"domain\\\": \\\"example.net\\\", \\\"match\\\": true}\"}" } ]}To clean up, remove the target, then delete the rule and the queue:
aws --endpoint-url "$VERA_ENDPOINT" events remove-targets --rule vera-docs-rule --ids docs-queueaws --endpoint-url "$VERA_ENDPOINT" events delete-rule --name vera-docs-ruleaws --endpoint-url "$VERA_ENDPOINT" sqs delete-queue --queue-url "$QUEUE_URL"Supported features
Section titled “Supported features”- Rules on the default event bus, created with an event pattern and deleted.
- SQS targets, added to a rule and removed.
- Putting events:
PutEventsreturns anEventIdfor each event and delivers it to the rule’s SQS target at once. The delivered envelope hasversion,detail-type,source,account,region,resourcesanddetail, but not theidfrom thePutEventsresponse. - Custom event buses, compared with recorded AWS responses on a few requests on 3 November 2026: see the notes for
DeleteEventBus,ListEventBuses,ListRules,PutRuleandPutTargets. - Testing event patterns: in the same recorded comparisons, one selected
TestEventPatternresponse matched AWS’s. That doesn’t cover every kind of pattern, and it’s separate from delivery, where patterns didn’t filter: see Limitations. - Also served, not yet tested: enabling rules, archives and replays, connections and API destinations, global endpoints, partner event sources, bus permissions and tags.
Limitations
Section titled “Limitations”The main limits are below. A few more apply to every service, and the API coverage notes cover smaller differences.
- Event patterns don’t filter. Events whose
sourcematched the rule’s pattern and events whosesourcedidn’t both reached the rule’s target. - Disabling a rule didn’t stop delivery. After
DisableRulereturned success, another matching event was still delivered to that rule’s SQS target. A successful disable request doesn’t mean delivery is off. - Delivered events differ from AWS’s.
detailarrives as a JSON string instead of an object, and there’s noidortime. - Some validation differs. In recorded comparisons from 3 November 2026,
PutTargetsaccepted a bus target without its requiredRoleArn,PutRuleaccepted a schedule on a custom bus, andDeleteEventBusandListRulesanswered differently from AWS for a bus that doesn’t exist. - Only SQS targets on the default bus were checked. In Vera 1.2.0 preview and Vera 1.2.0-rc.3, scheduled rules, custom-bus delivery, other kinds of target, input transformers, retries and dead-letter queues weren’t.
API coverage
Section titled “API coverage”Every operation in AWS's published 2015-10-07 API (SDK model, botocore 1.43.105), and whether the emulator implements it. Availability combines the earlier implementation inventory with the dated observations below; checking a page's example does not verify every operation. Each note names its evidence first; an observation given without a build or date comes from earlier testing, on 3 November 2026. What the statuses mean
No operation matches .
Try part of a name, such as ActivateEventSource, or .
| Operation | Status | Notes |
|---|---|---|
| Activate | Implemented | |
| Cancel | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Deactivate | Implemented | |
| Deauthorize | Implemented | |
| Delete | Implemented | |
| Delete | Implemented | |
| Delete | Implemented | |
| Delete | Implemented | |
| Delete | Known difference | Recorded comparison: Deleting the tested nonexistent custom event bus returns ResourceNotFoundException in the emulator; the AWS recording succeeds idempotently. |
| Delete | Implemented | |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Deleted the example's rule after its target was removed. |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Disable | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — Returned success, but another matching event put afterwards was still delivered to the rule's SQS target. |
| Enable | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Known difference | Recorded comparison: The emulator adds CreationTime and LastModifiedTime to the default bus response; those fields are absent from the compared AWS response. Timestamp values themselves were not compared. |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Known difference | Recorded comparison: For the tested nonexistent custom bus, the emulator returns a successful empty rule list; the AWS recording returns ResourceNotFoundException. |
| List | Implemented | |
| List | Implemented | |
| Put | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — Returned EventId values and delivered events to the rule's SQS target. An event whose source didn't match the rule's pattern was delivered too, and a matching event put after DisableRule succeeded was still delivered. The delivered envelope has detail as a JSON string and no id or time. |
| Put | Implemented | |
| Put | Implemented | |
| Put | Known difference | Recorded comparison: Earlier build, 3 November 2026 — The emulator accepts the tested ScheduleExpression on a custom event bus; the AWS recording rejects schedules on a non-default bus with ValidationException. This does not establish that a schedule fires. Local observation: Vera 1.2.0 preview, 5 November 2026 — Created the example's rule with an EventPattern on the default bus, but PutEvents also delivered events that didn't match it. |
| Put | Known difference | Recorded comparison: Earlier build, 3 November 2026 — For the tested event-bus targets, the emulator accepts an omitted required RoleArn and reports zero failed entries; the AWS recording rejects the request with ValidationException. This is required-role validation, not a claim about ambient caller permissions. Local observation: Vera 1.2.0 preview, 5 November 2026 — Added the example's SQS queue target to a default-bus rule. |
| Remove | Implemented | |
| Remove | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Removed the example's SQS target. |
| Start | Implemented | |
| Tag | Implemented | |
| Test | Implemented | |
| Untag | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented |