5.0 KiB
EventBridge
Protocol: JSON 1.1 (X-Amz-Target: AmazonEventBridge.*)
Endpoint: POST http://localhost:4566/
Supported Actions
| Action | Description |
|---|---|
CreateEventBus |
Create a custom event bus |
DeleteEventBus |
Delete an event bus |
DescribeEventBus |
Get event bus details |
UpdateEventBus |
Update event bus description, KMS key, dead-letter config, or log config |
ListEventBuses |
List all event buses |
PutRule |
Create or update a rule with a schedule or event pattern |
DeleteRule |
Delete a rule |
DescribeRule |
Get rule details |
ListRules |
List rules |
EnableRule |
Enable a disabled rule |
DisableRule |
Disable a rule |
PutTargets |
Add targets to a rule |
RemoveTargets |
Remove targets from a rule |
ListTargetsByRule |
List targets for a rule |
PutEvents |
Publish custom events to an event bus |
TestEventPattern |
Test whether a sample event matches a given pattern (no targets fired) |
ListTagsForResource |
- |
TagResource |
- |
UntagResource |
- |
PutPermission |
- |
RemovePermission |
- |
CreateArchive |
- |
DescribeArchive |
- |
UpdateArchive |
- |
DeleteArchive |
- |
ListArchives |
- |
CreateConnection |
Create a connection for API destinations (credential values are stored but never returned) |
DescribeConnection |
Get connection details with credential values stripped |
UpdateConnection |
Update connection description, auth type, or auth parameters |
DeleteConnection |
Delete a connection |
ListConnections |
List connections, optionally filtered by name prefix or state |
StartReplay |
- |
DescribeReplay |
- |
CancelReplay |
- |
ListReplays |
- |
Configuration
| Variable | Default | Description |
|---|---|---|
FLOCI_SERVICES_EVENTBRIDGE_ENABLED |
true |
Enable or disable the service |
Examples
export AWS_ENDPOINT_URL=http://localhost:4566
# Create a custom event bus
aws events create-event-bus \
--name my-bus \
--endpoint-url $AWS_ENDPOINT_URL
# Create a rule matching a pattern
aws events put-rule \
--name order-placed-rule \
--event-bus-name my-bus \
--event-pattern '{"source":["com.myapp"],"detail-type":["OrderPlaced"]}' \
--state ENABLED \
--endpoint-url $AWS_ENDPOINT_URL
# Add a Lambda target
aws events put-targets \
--rule order-placed-rule \
--event-bus-name my-bus \
--targets '[{
"Id": "process-order",
"Arn": "arn:aws:lambda:us-east-1:000000000000:function:process-order"
}]' \
--endpoint-url $AWS_ENDPOINT_URL
# Publish an event
aws events put-events \
--entries '[{
"Source": "com.myapp",
"DetailType": "OrderPlaced",
"Detail": "{\"orderId\":\"123\",\"amount\":99.99}",
"EventBusName": "my-bus"
}]' \
--endpoint-url $AWS_ENDPOINT_URL
Default Event Bus
EventBridge includes a default event bus (default) that accepts events from AWS services. Custom buses are for your own application events.
# List rules on the default bus
aws events list-rules --endpoint-url $AWS_ENDPOINT_URL
# Send to default bus
aws events put-events \
--entries '[{"Source":"myapp","DetailType":"test","Detail":"{}"}]' \
--endpoint-url $AWS_ENDPOINT_URL
Event Bus Targets
A rule can target another event bus by ARN: the event is republished there, and that bus's own rules evaluate it and fan out normally. Source, DetailType, Resources and the originating account/region carry over, and each hop gets a new event id.
aws events put-targets \
--rule order-placed-rule \
--event-bus-name my-bus \
--targets '[{
"Id": "forward-to-domain-bus",
"Arn": "arn:aws:events:us-east-1:000000000000:event-bus/domain-bus"
}]' \
--endpoint-url $AWS_ENDPOINT_URL
Step Functions Targets
A matching rule can start an unqualified Step Functions state machine ARN. The target supports the
full event as the default input, plus Input, InputPath, and InputTransformer. Floci resolves
the state machine from the account and region in its ARN.
State machine aliases and versions are not supported as EventBridge targets.
Current Behavior
PutEventsreports success once the source bus accepts an event, so target delivery failures surface only as aWARNin the Floci logs.- A
Detailforwarded to an event bus must be a JSON object, as in AWS; anything else is dropped, including anInputPathselecting a scalar such as$.detail.orderIdor an envelope carrying"detail": null. - A bus ARN naming another account is forwarded under that account, so the target bus and its rules resolve there.
- Onward delivery from that bus follows each target type: SQS and Step Functions resolve cross-account, while Lambda, SNS, Batch and Firehose resolve in the caller's account.
- An event is forwarded between buses only once, matching AWS: a bus that received an event from another bus does not forward it on to a third. The second hop is dropped with only a
WARNrather than reported to the caller.