Skip to content
Back to main site

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.

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.

Terminal window
export VERA_ENDPOINT="http://localhost:5003"
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test
export AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1
export AWS_SHARED_CREDENTIALS_FILE=/dev/null
export AWS_EC2_METADATA_DISABLED=true
export AWS_PAGER="" AWS_CLI_AUTO_PROMPT=off
unset AWS_PROFILE AWS_DEFAULT_PROFILE
unset AWS_SESSION_TOKEN AWS_SECURITY_TOKEN
unset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAME
unset AWS_CONTAINER_CREDENTIALS_FULL_URI
unset AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
cat > vera-aws-config <<'EOF'
[default]
region = us-east-1
output = json
cli_binary_format = base64
s3 =
addressing_style = path
EOF
export 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.

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.

Terminal window
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 ENABLED
aws --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 0

put-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.

Output (selected fields)
{
"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:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" events remove-targets --rule vera-docs-rule --ids docs-queue
aws --endpoint-url "$VERA_ENDPOINT" events delete-rule --name vera-docs-rule
aws --endpoint-url "$VERA_ENDPOINT" sqs delete-queue --queue-url "$QUEUE_URL"
  • Rules on the default event bus, created with an event pattern and deleted.
  • SQS targets, added to a rule and removed.
  • Putting events: PutEvents returns an EventId for each event and delivers it to the rule’s SQS target at once. The delivered envelope has version, detail-type, source, account, region, resources and detail, but not the id from the PutEvents response.
  • Custom event buses, compared with recorded AWS responses on a few requests on 3 November 2026: see the notes for DeleteEventBus, ListEventBuses, ListRules, PutRule and PutTargets.
  • Testing event patterns: in the same recorded comparisons, one selected TestEventPattern response 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.

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 source matched the rule’s pattern and events whose source didn’t both reached the rule’s target.
  • Disabling a rule didn’t stop delivery. After DisableRule returned 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. detail arrives as a JSON string instead of an object, and there’s no id or time.
  • Some validation differs. In recorded comparisons from 3 November 2026, PutTargets accepted a bus target without its required RoleArn, PutRule accepted a schedule on a custom bus, and DeleteEventBus and ListRules answered 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.

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

OperationStatusNotes
ActivateEventSourceImplemented
CancelReplayImplemented
CreateApiDestinationImplemented
CreateArchiveImplemented
CreateConnectionImplemented
CreateEndpointImplemented
CreateEventBusImplemented
CreatePartnerEventSourceImplemented
DeactivateEventSourceImplemented
DeauthorizeConnectionImplemented
DeleteApiDestinationImplemented
DeleteArchiveImplemented
DeleteConnectionImplemented
DeleteEndpointImplemented
DeleteEventBusKnown differenceRecorded comparison: Deleting the tested nonexistent custom event bus returns ResourceNotFoundException in the emulator; the AWS recording succeeds idempotently.
DeletePartnerEventSourceImplemented
DeleteRuleImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — Deleted the example's rule after its target was removed.
DescribeApiDestinationImplemented
DescribeArchiveImplemented
DescribeConnectionImplemented
DescribeEndpointImplemented
DescribeEventBusImplemented
DescribeEventSourceImplemented
DescribePartnerEventSourceImplemented
DescribeReplayImplemented
DescribeRuleImplemented
DisableRuleKnown differenceLocal 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.
EnableRuleImplemented
ListApiDestinationsImplemented
ListArchivesImplemented
ListConnectionsImplemented
ListEndpointsImplemented
ListEventBusesKnown differenceRecorded 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.
ListEventSourcesImplemented
ListPartnerEventSourceAccountsImplemented
ListPartnerEventSourcesImplemented
ListReplaysImplemented
ListRuleNamesByTargetImplemented
ListRulesKnown differenceRecorded comparison: For the tested nonexistent custom bus, the emulator returns a successful empty rule list; the AWS recording returns ResourceNotFoundException.
ListTagsForResourceImplemented
ListTargetsByRuleImplemented
PutEventsKnown differenceLocal 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.
PutPartnerEventsImplemented
PutPermissionImplemented
PutRuleKnown differenceRecorded 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.
PutTargetsKnown differenceRecorded 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.
RemovePermissionImplemented
RemoveTargetsImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — Removed the example's SQS target.
StartReplayImplemented
TagResourceImplemented
TestEventPatternImplemented
UntagResourceImplemented
UpdateApiDestinationImplemented
UpdateArchiveImplemented
UpdateConnectionImplemented
UpdateEndpointImplemented
UpdateEventBusImplemented