Skip to main content
Version: 3.0 (next)

Amazon EventBridge Amazon EventBridge Integration Guide

Connect to Amazon EventBridge to put custom events onto an event bus, where the bus's rules match them and route them to Lambda functions, SQS queues, SNS topics, Step Functions state machines, API destinations, and buses in other accounts. This guide covers connection setup, function configuration, and pipeline integration.

Overview​

The Amazon EventBridge connector publishes into AWS's serverless event router. Where SNS fans one message out to everyone subscribed to a topic, EventBridge evaluates every event against the bus's rules and delivers it only to the targets whose patterns match. That makes it the right choice when routing should be a property of the bus rather than of the publisher. The connector provides:

  • Event publishing to the default bus, a custom bus, or a partner bus, with the three fields rules match on — source, detail type, and a JSON detail body
  • Partial-failure detection — EventBridge answers a rejected event with HTTP 200 and a per-entry error, and this connector reports that as a node failure instead of a delivered event
  • Event bus discovery via the List Event Buses operation, so a pipeline can see which buses exist
  • Rule discovery via the List Rules operation, which answers "where will the event I publish actually go?"
  • Flexible authentication with IAM access keys or the AWS SDK default credential chain (environment variables, shared config, IRSA, instance profile)
  • Custom endpoint support for LocalStack and other AWS-compatible services
  • Templatable bus, source, detail type, and detail body, so one function serves many events
Publish-Only

EventBridge delivers events to AWS-native targets, not back to MaestroHub — the connector puts events onto a bus, it does not consume from one. To react to EventBridge events in a pipeline, add a rule whose target is an SQS queue and use the Amazon SQS trigger node; or point a rule at an API destination and use the Webhook Trigger.

EventBridge or SNS?

Both publish one message to many consumers, but they decide who gets it in different places.

  • SNS — the subscriber decides. Everything subscribed to the topic receives the message (optionally narrowed by a subscription filter policy the subscriber owns).
  • EventBridge — the bus decides. Rules on the bus match on source, detail type, and the contents of the detail, and route to targets. Adding a consumer means adding a rule, with no change to the publisher.

Publish to EventBridge when routing logic belongs to the platform; publish to SNS when fan-out is simple and the subscriber list is the routing.

Connection Configuration​

Amazon EventBridge Connection Creation Fields​

1. Profile Information​
FieldDefaultDescription
Profile Name-A descriptive name for this connection profile (required, max 100 characters)
Description-Optional description for this EventBridge connection
2. AWS Region​
FieldDefaultDescription
AWS Regionus-east-1AWS region where the event buses live (e.g., us-east-1, eu-central-1).
An Event Bus Is Regional

A bus exists in one region, and a rule only ever matches events put onto a bus in its own region. Publishing to orders from a us-east-1 connection reaches the us-east-1 orders bus, never a same-named bus in eu-central-1. Create one connection per region you publish into.

3. Authentication​
FieldDefaultDescription
Access Key ID-AWS Access Key ID. Leave empty to use the AWS SDK default credential chain (env vars, shared config, IAM role, IRSA).
Secret Access Key-AWS Secret Access Key. Required when Access Key ID is set; leave empty to use the default credential chain.
Session Token-Session token for temporary credentials (optional, used with AWS STS).

You can authenticate the connector in one of two ways:

Option A — Static IAM access keys (explicit)

Provide an Access Key ID and Secret Access Key (and optionally a Session Token for STS-based temporary credentials). Best for self-hosted deployments where the host has no AWS identity of its own.

Option B — AWS SDK default credential chain (implicit)

Leave both Access Key ID and Secret Access Key empty. The connector then resolves credentials in the standard AWS SDK order:

  1. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN)
  2. Shared credentials file (~/.aws/credentials)
  3. IAM Roles for Service Accounts (IRSA) when running on EKS
  4. EC2 instance profile / ECS task role

This is the recommended path for AWS-hosted MaestroHub deployments — no long-lived keys need to be stored in the connection profile.

Set Both or Neither

The Access Key ID and Secret Access Key must be set together. Setting only one is rejected at validation time. Session Token is optional and only used alongside static keys.

IAM Permissions

The IAM principal used by the connector must have:

OperationRequired IAM ActionScope
Connect / health probeevents:ListEventBusesRegion-level
Put Eventevents:PutEventsThe specific event bus ARN(s) you publish to
List Event Buses functionevents:ListEventBusesRegion-level
List Rules functionevents:ListRulesThe bus whose rules you list

The events:ListEventBuses permission is needed for the connection's startup health probe — without it, the connection will not reach Connected state, even if events:PutEvents is granted.

4. Custom Endpoint​
FieldDefaultDescription
Custom Endpoint-Custom EventBridge endpoint URL for LocalStack or other AWS-compatible services. Leave empty for AWS EventBridge.
LocalStack Development

For local development with LocalStack, set the custom endpoint to http://localhost:4566 (or wherever LocalStack is running) and start it with the events service enabled. Supply an AWS Region and any non-empty credentials — LocalStack does not validate them, but the AWS SDK needs some keys or it falls through to the host credential chain and fails.

5. Advanced​
FieldDefaultDescription
Request Timeout30sUpper bound on every EventBridge API call on this connection, including the connect check (1s–1h). A function's Timeout Override can shorten it, not extend it.
Max Retries3Retries after the first attempt for transient failures (0 = no retries, up to 10). The AWS SDK applies exponential backoff with jitter between attempts.
6. Connection Labels​
FieldDefaultDescription
Labels-Key-value pairs to categorize and organize this EventBridge connection (max 10 labels)

Example Labels

  • env: prod – Environment
  • domain: orders – Event domain
  • account: 123456789012 – AWS account ID

Function Builder​

Creating Amazon EventBridge Functions​

Once you have a connection established, you can create reusable functions:

  1. Open the connection and go to its Functions tab → New Function
  2. Select the desired function type (Put Event, List Event Buses, or List Rules)
  3. Configure the function parameters
Amazon EventBridge Function Creation

Select from three Amazon EventBridge function types: Put Event for publishing, and two discovery operations for buses and rules

Put Event Function​

Purpose: Put one custom event onto an event bus. Use this for domain events, alarms, workflow starts, and any message whose routing should be decided by the bus rather than by the publisher.

Configuration Fields

FieldTypeRequiredDefaultDescription
Event BusStringNodefaultName or ARN of the target event bus. Leave as default for the account's default bus. Supports ((parameter)) syntax.
SourceStringYes-Event source, matched by rules. Use reverse-DNS naming (e.g., com.mycompany.orders). The aws. prefix is reserved by AWS and is rejected. Supports ((parameter)) syntax.
Detail TypeStringYes-Free-form event name, matched by rules alongside source (e.g., Order Placed). Supports ((parameter)) syntax.
DetailStringYes-Event body as a JSON object. Rules match on its fields, so a bare string, number, or array is rejected. Supports ((parameter)) syntax.
Resources (JSON array)StringNo-JSON array of ARNs the event concerns. Rules can match on it. Supports ((parameter)) syntax.
Event TimeStringNo-RFC3339 timestamp for the event (e.g., 2026-01-31T14:05:00Z). Leave empty to let EventBridge stamp the ingestion time. Supports ((parameter)) syntax.
Timeout OverrideDurationNo-Bound on this function's calls; the connection's Request Timeout still applies and the shorter one wins. A Go duration string between 1s and 1h (e.g. 30s). Leave empty to use only the connection's bound; 0 is not accepted.

Use Cases:

  • Emit a domain event that fans out to Lambda and SQS through the bus's rules
  • Raise a production alarm onto a shared ops bus owned by another team
  • Forward line telemetry summaries to a cross-account analytics bus
  • Start a Step Functions workflow without coupling the pipeline to the workflow's ARN
The Three Fields Rules Match On

A rule's event pattern matches on source, detail type, and the contents of detail. A rule like

{
"source": ["com.mycompany.orders"],
"detail-type": ["Order Placed"],
"detail": { "total": [{ "numeric": [">", 1000] }] }
}

only fires for high-value orders. Design source and detail type as a stable contract — consumers write rules against them, so renaming one silently stops every matching rule.

Detail Must Be a JSON Object

{"orderId":"o-1"} is valid. "o-1", 42, and [{"orderId":"o-1"}] are not — a rule has no fields to match against them, and EventBridge fails the entry. MaestroHub rejects a non-object detail when you save the function, so the problem surfaces in the form rather than at pipeline runtime.

A Rejected Event Answers HTTP 200

EventBridge reports a bad entry as a successful HTTP call with a non-zero FailedEntryCount and a per-entry error code. A naive client reads "200" and reports success, and the pipeline carries on with an empty event ID. This connector inspects the entry and fails the node instead, with the AWS error code in the message — for example NotAuthorizedForSourceException when the bus policy refuses your source.

Retry behavior follows the entry's own code: InternalFailure and ThrottlingException are retried, and everything else goes straight to the dead-letter path rather than burning the retry budget on an event AWS will keep refusing.

Event Size Limit

An event's total size is capped at 256 KB, counted across detail, detail type, source, resources, and time. Large payloads belong in S3 with the object key in the detail — the pattern AWS calls the claim check. See calculating event size.


List Event Buses Function​

Purpose: List the event buses visible to the connection's IAM principal in the configured region — the default bus, custom buses, and partner buses. Useful for auditing the account's eventing topology and validating a bus name before a deployment.

Configuration Fields

FieldTypeRequiredDefaultDescription
Name PrefixStringNo-Return only buses whose name starts with this prefix. Leave empty for all.
Max ItemsNumberNo100Maximum number of buses to return (1–1000).
TimeoutDurationNo30mBound on this single operation (1s–1h).

Use Cases:

  • Discover the custom buses available before publishing
  • Audit the eventing topology of a region
  • Build a dynamic bus dispatch table for a multi-tenant pipeline

List Rules Function​

Purpose: List the rules attached to an event bus, with each rule's event pattern or schedule expression, state, and ARN. This is how a pipeline answers "where will the event I just published actually go?" without leaving MaestroHub.

Configuration Fields

FieldTypeRequiredDefaultDescription
Event BusStringNodefaultName or ARN of the bus whose rules to list. Leave as default for the account's default bus.
Name PrefixStringNo-Return only rules whose name starts with this prefix. Leave empty for all.
Max ItemsNumberNo100Maximum number of rules to return (1–1000).
TimeoutDurationNo30mBound on this single operation (1s–1h).

Use Cases:

  • Check which rules will match an event before publishing it
  • Audit disabled rules on a shared bus — a DISABLED rule matches nothing, and is the usual reason a published event appears to vanish
  • Report where a bus routes its events, as part of a change review
Pattern or Schedule, Never Both

A rule is driven by either an event pattern (it matches published events) or a schedule expression (it fires on a cron or rate). Both fields are always returned; whichever is empty tells you which kind of rule you are looking at.

The Item Budget Reaches AWS

Both list functions push Max Items down to AWS as the request limit rather than fetching everything and trimming afterwards — a budget of 10 costs one small page, not a full listing thrown away. AWS caps a single page at 100, so a larger budget is fetched across pages. If more items exist than the budget allows, the call's metadata says so (_metadata.truncated is true) and result.nextToken records where the listing stopped.


Using Parameters​

The ((parameterName)) syntax creates dynamic, reusable functions. Parameters are automatically detected from your configuration fields and can be configured with:

ConfigurationDescriptionExample
TypeData type validationstring, number, boolean, datetime, json, buffer
RequiredMake parameters mandatory or optionalRequired / Optional
Default ValueFallback value if not provideddefault, com.mycompany.orders, {}
DescriptionHelp text for users"Target event bus", "Order identifier"
Amazon EventBridge Function Parameters

Configure dynamic parameters for Put Event functions with type validation, defaults, and descriptions

Parameter Availability

Template parameters are available for Put Event functions (Event Bus, Source, Detail Type, Detail, Resources, Event Time). The two list functions take static values — their scope is fixed at configuration time.

Pipeline Integration​

Use the Amazon EventBridge functions you create here as nodes inside the Pipeline Designer. Drag them onto the canvas, bind parameters to upstream outputs or constants, and publish events without leaving the designer.

For broader orchestration patterns that combine EventBridge with databases, REST, MQTT, or other connector steps, see the Connector Nodes page.

Common Use Cases​

Domain Events From a Processing Pipeline​

Scenario: A pipeline that processes orders should announce each completed order so other teams can react without the pipeline knowing who they are.

Put Event Configuration:

  • Event Bus: orders
  • Source: com.mycompany.orders
  • Detail Type: Order Placed
  • Detail:
{
"orderId": "((orderId))",
"customerId": "((customerId))",
"total": ((total)),
"currency": "((currency))"
}

Pipeline Integration: Place the Put Event node at the end of the order-processing branch. Downstream teams add rules on the orders bus — fulfilment matches every Order Placed, fraud review matches only detail.total > 1000 — and the pipeline never changes.


Cross-Account Alarm Routing​

Scenario: Plant pipelines run in a workload account, but alarms must reach the central ops account's incident tooling.

Put Event Configuration:

  • Event Bus: arn:aws:events:eu-central-1:999999999999:event-bus/ops-alarms (the ops account's bus, by ARN)
  • Source: com.mycompany.plant.((site))
  • Detail Type: Equipment Fault
  • Detail:
{
"machineId": "((machineId))",
"fault": "((faultType))",
"value": ((value)),
"severity": "((severity))"
}
  • Resources: ["((machineArn))"]

Pipeline Integration: Connect downstream of a threshold or anomaly-detection node. The ops account's bus policy must allow events:PutEvents from the workload account; without it, EventBridge answers HTTP 200 with NotAuthorizedForSourceException, and the node reports that as a failure rather than a delivered alarm.


Pre-Publish Routing Check​

Scenario: Before a release adds a new event type, confirm that a rule exists to consume it — and that the rule is enabled.

Function: List Rules on the orders bus, with Name Prefix fulfilment-

Pipeline Integration: Run List Rules in a pre-deploy pipeline, then assert in a condition node that the expected rule is present and its state is ENABLED. A disabled rule silently matches nothing, so this check catches the failure mode that is hardest to spot after the fact.


Eventing Topology Audit​

Scenario: Compliance requires a periodic inventory of every event bus and its rules, per region, for review.

Functions: List Event Buses, then List Rules per bus

Pipeline Integration: Schedule a daily pipeline that runs List Event Buses across each regional connection, iterates the result with a ForEach node, and runs List Rules for each bus. Write the combined result to an audit table (PostgreSQL, BigQuery, or S3) for review.