Service Reference
EventBridge — endpoint support
EventBridge accepts AWS JSON 1.1 via X-Amz-Target: AWSEvents.<operation>. It also accepts Smithy RPC v2 CBOR at /service/EventBridge/operation/<operation> with Smithy-Protocol...
EventBridge — endpoint support
AWS docs: EventBridge API Reference
EventBridge accepts AWS JSON 1.1 via X-Amz-Target: AWSEvents.<operation>.
It also accepts Smithy RPC v2 CBOR at /service/EventBridge/operation/<operation>
with Smithy-Protocol: rpc-v2-cbor and Content-Type: application/cbor.
Overcast implements event buses, rules, targets, tagging, event ingestion, and
same-process target delivery.
[!WARNING] Emulation tier: Partial — EventBridge matches common event patterns and fans matched events out to Lambda, SQS, SNS, Step Functions, Kinesis, Firehose and EventBridge event bus targets; scheduled rules can also invoke ECS/Fargate
RunTasktargets. Target types outside that list, archives/replay, API destinations and advanced pattern operators (prefix,numeric,anything-but, …) are still incomplete.
Notes
-
Target fan-out.
PutEventsevaluates exact-match rule patterns and delivers matching events to every target type listed above. A target ARN naming any other service is rejected byPutTargetswith aFailedEntriesentry carryingErrorCode: UnsupportedTargetType, rather than being accepted and silently dropped at delivery time. This is a deliberate divergence from AWS, where all ~20 target types work: an honest refusal is preferred to a rule that provisions cleanly and never fires. -
Input transformation.
Input,InputPathandInputTransformerare applied before delivery, and a target may set at most one of them (as on AWS).InputPathandInputTransformer.InputPathsMapaccept the JSONPath subset AWS uses:$, dotted member access and array indexing.InputTransformertemplates may reference<aws.events.rule-name>,<aws.events.rule-arn>,<aws.events.event.json>and<aws.events.event.ingestion-time>. -
Event bus targets. A rule may target another event bus. The event is republished there through
PutEventscarrying the originalsource,detail-type,detailandresources, so a rule on the downstream bus can match on the fields a real rule filters on. A target that setsInput,InputPathorInputTransformerreplaces the forwardeddetailwith the transformed payload and keeps the routing fields. Every hop is a nested in-process call, so a chain is capped at 4 hops: a cycle of buses forwarding to each other terminates with a delivery error naming the hop budget rather than exhausting the stack. -
Retries and dead-letter queues. A failed delivery is retried up to the target’s
RetryPolicy.MaximumRetryAttempts(capped at 5 retries) and stops early once the event is older thanRetryPolicy.MaximumEventAgeInSeconds, measured from the envelope’s owntime. The event is then sent to the target’sDeadLetterConfigSQS queue if one is configured, and otherwise dropped with a logged warning. Retries are immediate: real EventBridge backs off over up to 24 hours, which a synchronous emulator has nowhere to wait for — so in practice the age limit only bites when a target itself is slow to fail. -
Delivery visibility. Recent per-target outcomes (delivered / retried / dead-lettered / dropped) are exposed to the web console at
GET /_overcast/eventbridge/deliveries, and each rule’s targets with their resolved type atGET /_overcast/eventbridge/rule-targets. Both are emulator-only console endpoints, not AWS APIs, and the outcome feed is a bounded in-memory ring that does not survive a restart. -
Scheduled ECS targets. Rate and AWS cron expressions are evaluated by an in-process clock-driven engine. ECS/Fargate targets call ECS
RunTaskwith the configured target parameters. -
Cron expressions. The full six-field AWS syntax is supported, shared with EventBridge Scheduler: numbers,
,lists,-ranges,/steps (including over a range,0-6/2), the three-letter month and day names (JAN,MON-FRI, case-insensitive), and theL,LW,<day>W,<day>Land<day>#<n>day specifiers. Day-of-week is AWS’s 1-7 from Sunday, not Go’s 0-6 from Sunday, so1is Sunday and7is Saturday.PutRulerefuses an expression it cannot honour rather than storing a rule that would never fire, and the error names the expression and the field at fault. The five-field Unix form is the common mistake and AWS refuses it too — every five minutes iscron(*/5 * * * ? *), notcron(*/5 * * * *). -
Service-originated events. A handful of emulated services publish their own events onto the default bus, the way real AWS services do on a customer’s behalf: CloudWatch alarms (
CloudWatch Alarm State Change, every transition), S3 (Object Created/Object Deleted, when a bucket’sEventBridgeConfigurationis set), EC2 (EC2 Instance State-change Notification, every time an instance’s state changes — including its first transition intopending), ECS (ECS Task State Change, every time a task’slastStatuschanges), and Step Functions (Step Functions Execution Status Change, sourceaws.states, every time a standard-workflow execution’s status changes — RUNNING on start, then SUCCEEDED, FAILED, TIMED_OUT or ABORTED on completion; the FAILED/TIMED_OUT detail carries the execution’serror/cause). Real AWS emits substantially more service-originated events than these five; a rule matching one of those will never fire here — see #758 (closed out by #1225 and #1221). -
Synthetic default bus.
DescribeEventBusreturns a synthetic “default” bus even if one has not been explicitly created. -
CDK compatible management plane. Sufficient for CDK deployments that create buses, rules, and targets, including scheduled ECS/Fargate task target metadata.
Summary
| Category | ✅ Supported | ❌ Unsupported |
|---|---|---|
| Event buses | 4 | |
| Rules | 7 | |
| Targets | 3 | |
| Events | 1 | |
| Tags | 3 | |
| Archives | 4 | |
| Replays | 3 | |
| Connections | 4 |
Endpoints
Event buses
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
CreateEventBus | ✅ Supported | Creates a custom event bus | docs |
DescribeEventBus | ✅ Supported | Returns bus details; synthetic default bus | docs |
ListEventBuses | ✅ Supported | Always includes default bus | docs |
DeleteEventBus | ✅ Supported | docs |
Rules
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
PutRule | ✅ Supported | Creates or updates a rule | docs |
DescribeRule | ✅ Supported | docs | |
ListRules | ✅ Supported | Lists rules for a bus | docs |
EnableRule | ✅ Supported | Sets rule state to ENABLED | docs |
DisableRule | ✅ Supported | Sets rule state to DISABLED | docs |
DeleteRule | ✅ Supported | docs | |
TestEventPattern | ✅ Supported | Evaluates an event against a pattern with the matcher rule delivery uses; unparseable patterns are InvalidEventPatternException, mandatory envelope fields are not enforced | docs |
Targets
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
PutTargets | ✅ Supported | Adds Lambda, SQS, SNS, Step Functions, Kinesis, Firehose and ECS targets; rejects other target types at add time | docs |
ListTargetsByRule | ✅ Supported | Lists targets including input transformers and ECS/Kinesis/SQS target parameters | docs |
RemoveTargets | ✅ Supported | Removes targets from a rule | docs |
Events
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
PutEvents | ✅ Supported | Delivers matching rules to Lambda, SQS, SNS, Step Functions, Kinesis and Firehose targets, applying InputPath/InputTransformer and RetryPolicy/DLQ | docs |
Tags
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
TagResource | ✅ Supported | Tag buses and rules | docs |
ListTagsForResource | ✅ Supported | List tags for a resource | docs |
UntagResource | ✅ Supported | Removes tags from a resource | docs |
Archives
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
CreateArchive | ❌ Unsupported | Returns 501 | docs |
DescribeArchive | ❌ Unsupported | Returns 501 | docs |
ListArchives | ❌ Unsupported | Returns 501 | docs |
DeleteArchive | ❌ Unsupported | Returns 501 | docs |
Replays
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
StartReplay | ❌ Unsupported | Returns 501 | docs |
DescribeReplay | ❌ Unsupported | Returns 501 | docs |
ListReplays | ❌ Unsupported | Returns 501 | docs |
Connections
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
CreateConnection | ❌ Unsupported | Returns 501 | docs |
DescribeConnection | ❌ Unsupported | Returns 501 | docs |
ListConnections | ❌ Unsupported | Returns 501 | docs |
DeleteConnection | ❌ Unsupported | Returns 501 | docs |