> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EventBridge

> EventBridge APIs with Cloud Adapter.

This page describes how EventBridge maps to services in the environment where the application runs. Some profiles adapt origin API calls; others translate infrastructure or document target-native behavior.

## Supported environments

| Environment        | Mapping              |
| ------------------ | -------------------- |
| Akamai             | API                  |
| Azure              | API + Infrastructure |
| DigitalOcean       | API                  |
| Google Cloud       | API + Infrastructure |
| OCI                | API                  |
| Private Kubernetes | API                  |
| Scaleway           | API                  |

API means the profile adapts origin API behavior. Infrastructure means the profile changes provisioned resources or documents a target-native alternative without promising an origin API endpoint. Check the operation and capability tables for the behavior your application depends on.

## How the targets compare

Each row compares a capability of EventBridge with its adaptation on each target.
A dash means this profile does not state the capability for that target.

### Cloud Adapter

| Capability                                                  | EventBridge                  | Akamai, Azure, DigitalOcean, Google Cloud, OCI, Private Kubernetes, and Scaleway · CloudNativePG                              | Azure · PostgreSQL Flexible Server                                                                                                                                                                                                                                                                                                | Azure · Azure Event Grid                                                                                                                                                                    | Azure · Container Apps | Google Cloud · Cloud SQL for PostgreSQL                                                                                                                                                                                                                                                                                                                     | Google Cloud · Google Pub/Sub                                                                                                                                                                                                 |
| ----------------------------------------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event bus + PutEvents                                       | native                       | EventBridge API with PostgreSQL persistence                                                                                   | EventBridge API with PostgreSQL persistence                                                                                                                                                                                                                                                                                       | Outside the offered EventBridge contract                                                                                                                                                    | -                      | EventBridge API with PostgreSQL persistence                                                                                                                                                                                                                                                                                                                 | Outside the offered EventBridge contract                                                                                                                                                                                      |
| Event-pattern matching                                      | Yes                          | Partial - Nested detail, \$or and EventBridge content filters, with ASCII-only case folding                                   | Partial - Nested detail, \$or and EventBridge content filters, with ASCII-only case folding                                                                                                                                                                                                                                       | No - Event Grid advanced filters cover numeric and string conditions on supported fields, with their own syntax and limits. They do not cover the complete EventBridge pattern language.    | -                      | Partial - Nested detail, \$or and EventBridge content filters, with ASCII-only case folding                                                                                                                                                                                                                                                                 | No - Pub/Sub filters message attributes, not the message body. Promoting source and detail-type to attributes can cover simple rules; nested EventBridge detail matching needs additional processing.                         |
| Scheduled rules · cron / rate                               | native                       | Rates and six-field UTC cron, refusing a few forms with undocumented timing; no missed-occurrence backfill                    | Rates and six-field UTC cron, refusing a few forms with undocumented timing; no missed-occurrence backfill                                                                                                                                                                                                                        | Outside this mapping                                                                                                                                                                        | -                      | Rates and six-field UTC cron, refusing a few forms with undocumented timing; no missed-occurrence backfill                                                                                                                                                                                                                                                  | Outside this mapping                                                                                                                                                                                                          |
| Rule targets · fan-out                                      | SQS / SNS / Lambda / …       | Separate durable work per rule and target; authorized SQS, SNS, Lambda and unsigned HTTP delivery                             | Separate durable work per rule and target; authorized SQS, SNS, Lambda and unsigned HTTP delivery                                                                                                                                                                                                                                 | Outside this mapping                                                                                                                                                                        | -                      | Separate durable work per rule and target; authorized SQS, SNS, Lambda and unsigned HTTP delivery                                                                                                                                                                                                                                                           | Outside this mapping                                                                                                                                                                                                          |
| Target DLQ + retry                                          | Yes                          | Partial - Per-target retry and age limits; asynchronous SQS dead-letter handoff with separate retries and possible duplicates | Partial - Per-target retry and age limits; asynchronous SQS dead-letter handoff with separate retries and possible duplicates                                                                                                                                                                                                     | No - Event Grid topic subscriptions have native retry and event-age policies and can dead-letter to Blob Storage. That does not implement an EventBridge target's SQS dead-letter contract. | -                      | Partial - Per-target retry and age limits; asynchronous SQS dead-letter handoff with separate retries and possible duplicates                                                                                                                                                                                                                               | No - Pub/Sub subscription redelivery and dead-letter topics have different semantics from EventBridge target retries and an SQS dead-letter queue. They do not establish destination success or EventBridge event-age limits. |
| API coverage                                                | full                         | high                                                                                                                          | high                                                                                                                                                                                                                                                                                                                              | minimal                                                                                                                                                                                     | partial                | high                                                                                                                                                                                                                                                                                                                                                        | minimal                                                                                                                                                                                                                       |
| Durability · backups + cluster rebuild                      | AWS-managed regional service | -                                                                                                                             | buses, rules, events and pending deliveries persist on the Microsoft-operated server outside the Cloud Adapter deployment cluster, with automated backups with a seven-day retention window and point-in-time restore inside it; a cluster rebuild does not lose them                                                             | -                                                                                                                                                                                           | -                      | buses, rules, events and pending deliveries persist on the Google-operated instance outside the Cloud Adapter deployment cluster, with daily automated backups with point-in-time recovery over seven days of transaction logs; a cluster rebuild does not lose them                                                                                        | -                                                                                                                                                                                                                             |
| Availability · server restarts                              | AWS-managed                  | -                                                                                                                             | one server in a single availability zone with no zone-redundant standby; during a maintenance or failure restart PutEvents returns errors and delivery stops, and committed work resumes when the server returns                                                                                                                  | -                                                                                                                                                                                           | -                      | -                                                                                                                                                                                                                                                                                                                                                           | -                                                                                                                                                                                                                             |
| Shared database · one server per Cloud Adapter deployment   | dedicated service            | -                                                                                                                             | one Flexible Server per Cloud Adapter deployment at a fixed default size, because an event bus declares no database size; EventBridge state shares its database with the SQS and SNS adapters the same Cloud Adapter deployment serves on PostgreSQL, so their load shares the server's connection, storage and throughput limits | -                                                                                                                                                                                           | -                      | -                                                                                                                                                                                                                                                                                                                                                           | -                                                                                                                                                                                                                             |
| Availability · instance restarts                            | AWS-managed                  | -                                                                                                                             | -                                                                                                                                                                                                                                                                                                                                 | -                                                                                                                                                                                           | -                      | one instance in a single zone with no regional standby; during a maintenance or failure restart PutEvents returns errors and delivery stops, and committed work resumes when the instance returns                                                                                                                                                           | -                                                                                                                                                                                                                             |
| Shared database · one instance per Cloud Adapter deployment | dedicated service            | -                                                                                                                             | -                                                                                                                                                                                                                                                                                                                                 | -                                                                                                                                                                                           | -                      | one Cloud SQL instance per Cloud Adapter deployment at a fixed, shared-core default machine size, because an event bus declares no database size; EventBridge state shares its database with the SQS and SNS adapters the same Cloud Adapter deployment serves on PostgreSQL, so their load shares the instance's connection, storage and throughput limits | -                                                                                                                                                                                                                             |

## On Akamai, Azure, DigitalOcean, Google Cloud, OCI, Private Kubernetes, and Scaleway

### CloudNativePG

| Operation                                           | Area      | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------------------- | --------- | ------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cross-account / cross-region buses                  | Bus       | Out of scope | Full surface | Cross-account and cross-region bus routing is outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Event bus (default + custom)                        | Bus       | Supported    | Common       | Terraform bus, rule and target declarations and EventBridge API calls use the same PostgreSQL records within the authenticated account. Custom buses are stored durably; the default bus is available per account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Event bus SSE (customer KMS key)                    | Bus       | Out of scope | Full surface | A customer-managed KMS key per bus is unsupported. Configure encryption on the backing store.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Schema registry / EventBridge Pipes                 | Ecosystem | Out of scope | Full surface | The schema registry and EventBridge Pipes are separate services outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| PutEvents                                           | Publish   | Partial      | Common       | On an existing bus, each event and its matched rule-target delivery records commit in one transaction. Entries commit separately; a request failure can follow earlier commits, so retrying the batch can duplicate events. A nonexistent bus returns an event ID without storing or delivering the event, as EventBridge does. Confirm the bus exists before switching producers. Entries are validated as EventBridge validates them, and each refused entry is reported with EventBridge's error code while the rest of the batch is accepted. A bus can be named by ARN within the calling account and Region.                                                                                                                                                                                                     |
| Archive + replay                                    | Replay    | Out of scope | Full surface | Event archives and time-range replay are outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Rule: event pattern (JSON matcher)                  | Rules     | Partial      | Common       | The adapter evaluates nested detail fields, \$or, prefix and suffix (including their case-insensitive forms), equals-ignore-case, wildcard with escaped asterisks, anything-but with values, prefix, suffix, wildcard and case-insensitive forms, numeric ranges, exists, and IPv4 and IPv6 cidr. Invalid patterns are refused with EventBridge's reasons. Case-insensitive comparison covers ASCII letters only. Check each operator used by the application.                                                                                                                                                                                                                                                                                                                                                         |
| Rule: scheduled (cron / rate)                       | Rules     | Partial      | Most usage   | Rates and six-field UTC cron produce durable delivery work. Cron supports values, lists, ranges including wrapping ranges, steps, names, ?, L, L-n, LW, nW, nL and n#k. PutRule refuses the expressions EventBridge refuses, and also refuses a few forms EventBridge accepts but whose firing times are undocumented: a step of zero, # on a range or a day outside 1-7, W on a range, and L-n or ranged L in day-of-week. Schedules are allowed only on the default bus. Missed occurrences are not backfilled. This covers scheduled rules, not the separate EventBridge Scheduler service.                                                                                                                                                                                                                         |
| DLQ + retry policy on targets                       | Targets   | Partial      | Most usage   | Retries use each target's attempt and event-age limits; age starts at acceptance. Delivery is at least once. Terminal dispatch failures can record durable work for an SQS dead-letter queue, whose sends retry separately and can also produce duplicates. The queue receives the rendered target payload with EventBridge's ERROR\_CODE, ERROR\_MESSAGE, RULE\_ARN and TARGET\_ARN attributes, plus RETRY\_ATTEMPTS and EXHAUSTED\_RETRY\_CONDITION when a retry limit was reached. Error codes other than permission, missing-resource and connection failures are reported as UNKNOWN. Exhausted dead-letter sends need operator attention; a configured queue does not guarantee that every failure reaches it. Lambda synchronous fallback uses this policy instead of Lambda asynchronous failure destinations. |
| Target input (constant / input\_path / transformer) | Targets   | Partial      | Full surface | Targets receive the event envelope, constant Input, an InputPath selection or an InputTransformer result. JSON paths support the root, dotted members and nonnegative array indices. Wildcards, filters, slices, recursive descent and quoted members are refused. Template variables must be declared; AWS reserved-variable coverage differs. As in EventBridge, an InputPath that selects nothing delivers \{}, and a transformer variable whose path selects nothing renders as an empty value.                                                                                                                                                                                                                                                                                                                    |
| Targets (fan a rule to N targets)                   | Targets   | Partial      | Common       | Each matched rule-target pair has independent delivery work, including rules sharing a destination. SQS, SNS and Lambda require configured endpoints and permission to call the destination. HTTP targets receive an unsigned POST; EventBridge Connections and API Destinations are outside this mapping. Lambda receivers that refuse asynchronous invocation use synchronous fallback, with function failures handled by the EventBridge retry policy. PutTargets refuses RoleArn, EcsParameters, SqsParameters, HttpParameters, KinesisParameters, BatchParameters, RedshiftDataParameters, SageMakerPipelineParameters, AppSyncParameters and RunCommandParameters with ValidationException; the whole request fails without storing its targets.                                                                 |

#### Accepting and matching events

Tensor9 serves EventBridge APIs with PostgreSQL holding buses, rules, targets, accepted events and pending delivery work. Terraform declarations and authenticated API calls address the same records within an account. Configure the application client to use the EventBridge endpoint and credentials for the target environment.

For each event on an existing bus, the adapter evaluates enabled rules on that bus and commits the event with one delivery record per matched rule and target. Two rules sharing a destination produce separate deliveries. Entries commit separately. A batch request can fail after earlier entries have committed, so retrying the batch can duplicate events. Destination delivery happens afterward.

A nonexistent bus can return an event ID without storing or delivering the event. Confirm the bus exists before switching producers; an event ID alone does not establish durable work.

The matcher evaluates nested objects, scalar and array values, the alternatives operator, prefix and suffix with their case-insensitive forms, equals-ignore-case, wildcard with escaped asterisks, numeric ranges, exists, IPv4 and IPv6 cidr, and anything-but with values, prefix, suffix, wildcard and case-insensitive forms. It runs in the adapter, so rules can inspect nested detail data without promoting it to broker attributes. Invalid patterns are refused with EventBridge's reasons. Case-insensitive comparison covers ASCII letters only.

#### Destination calls and payloads

Workers claim delivery records and call the configured destination. SQS, SNS and Lambda calls use signed service requests. Each destination needs a reachable endpoint and permission for its operation: SendMessage, Publish or InvokeFunction. Do not assume an SQS delivery role also grants SNS or Lambda access. Direct HTTP targets receive an unsigned POST; EventBridge Connections and managed API Destinations are outside this mapping.

By default, a target receives the EventBridge envelope, including id, source, detail-type, time, region, account, resources and detail. A target can instead use constant Input, an InputPath selection or an InputTransformer template. Selection modes are mutually exclusive. JSON paths support the root, dotted members and nonnegative array indices. Unsupported path syntax is refused when configuring targets. Template variables must be declared; do not assume all AWS reserved variables are available. As in EventBridge, an InputPath that selects nothing delivers an empty JSON object, and a template variable whose path selects nothing renders as an empty value.

Lambda calls first request asynchronous invocation. A receiver that explicitly refuses it uses synchronous fallback. With that fallback, function errors follow the EventBridge target retry policy, and Lambda asynchronous failure destinations do not apply. Deliveries in a claimed batch are sent concurrently, so a slow function does not hold the others in its batch, though the slowest send, up to a per-send deadline, delays the next batch.

#### Recovery, retries and dead letters

Accepted delivery work survives a process restart. Work a stopped worker had claimed resumes when that claim expires, which can take up to about five minutes. A worker can retry after a lease expires, including when the destination accepted the preceding call but the worker failed before recording success. Delivery is at least once with no ordering guarantee. Use an application event key to make destination side effects safe to repeat.

Each target can set its retry count and event-age limit. Age is measured from acceptance, rather than from the event's supplied time. The default attempt budget differs from AWS. One target's retry state is independent of another target's success.

Terminal dispatch failures with a configured SQS dead-letter queue record the failed delivery and pending dead-letter send in one database transaction. A separate worker sends the rendered target payload to that queue with EventBridge's ERROR\_CODE, ERROR\_MESSAGE, RULE\_ARN and TARGET\_ARN message attributes, adding RETRY\_ATTEMPTS and EXHAUSTED\_RETRY\_CONDITION when a retry or age limit ran out. Error codes other than permission, missing-resource and connection failures are reported as UNKNOWN. Dead-letter arrival is asynchronous and can also be duplicated after a crash. Queue failures retry separately, but exhausting that budget leaves work requiring operator attention. A configured dead-letter queue is therefore not a guarantee that every failed event arrives there.

#### Scheduled rules

A database-backed schedule driver creates the same durable work used for matched events. It supports rates and six-field UTC cron, including values, ranges that wrap, lists, steps, names, the question-mark day selector, and the L, L-n, LW, nW, nL and n#k calendar forms.

PutRule validates expressions as EventBridge does and allows schedules only on the default bus. It also refuses a few forms EventBridge accepts whose firing times are undocumented: a step of zero, # on a range or on a day outside 1-7, W on a range, and L-n or a ranged L in the day-of-week field. A rate too long to schedule within the database's calendar is accepted and never fires. Missed occurrences during downtime are not backfilled, and re-enabling a rule does not replay its disabled intervals. This mapping covers EventBridge scheduled rules; the separate EventBridge Scheduler service is outside its scope.

#### Limitations

PutTargets refuses per-target RoleArn and service-specific parameter objects, including FIFO SqsParameters, ECS and HTTP parameters. A request containing an unsupported target field fails as a whole. Review the operation table before migrating those declarations.

Workers resolve queued deliveries against target configuration when claiming work. Updating a target can change where pending work goes; an already claimed delivery may still use the previous configuration. Disabling a rule stops new matching but does not cancel accepted work. Drain pending deliveries before deleting and recreating a target with the same name.

Event archives, replay, cross-account and cross-region routing, customer KMS keys per bus, Pipes and the schema registry are outside this mapping. Durable delivery records do not provide an application-facing event archive. Case-insensitive pattern matching covers ASCII letters only.

#### Other considerations

Tensor9 operates the service adapter, matcher, delivery workers and scheduler. Database availability, backups and capacity follow the selected PostgreSQL deployment. Configure database access and destination permissions as part of the deployment, then check received payloads as well as successful PutEvents responses.

Provision buses, rules and targets before switching producers. Existing AWS history and pending deliveries are not copied. Keep source destinations available while their pending work finishes. Monitor pending work, retries, terminal failures and failed dead-letter sends separately; a successful publish does not establish successful delivery.

## On Azure

### PostgreSQL Flexible Server

| Operation                                           | Area      | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------------------- | --------- | ------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cross-account / cross-region buses                  | Bus       | Out of scope | Full surface | Cross-account and cross-region bus routing is outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Event bus (default + custom)                        | Bus       | Supported    | Common       | Terraform bus, rule and target declarations and EventBridge API calls use the same PostgreSQL records within the authenticated account. Custom buses are stored durably; the default bus is available per account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Event bus SSE (customer KMS key)                    | Bus       | Out of scope | Full surface | A customer-managed KMS key per bus is unsupported. Configure encryption on the backing store.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Schema registry / EventBridge Pipes                 | Ecosystem | Out of scope | Full surface | The schema registry and EventBridge Pipes are separate services outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| PutEvents                                           | Publish   | Partial      | Common       | On an existing bus, each event and its matched rule-target delivery records commit in one transaction. Entries commit separately; a request failure can follow earlier commits, so retrying the batch can duplicate events. A nonexistent bus returns an event ID without storing or delivering the event, as EventBridge does. Confirm the bus exists before switching producers. Entries are validated as EventBridge validates them, and each refused entry is reported with EventBridge's error code while the rest of the batch is accepted. A bus can be named by ARN within the calling account and Region.                                                                                                                                                                                                     |
| Archive + replay                                    | Replay    | Out of scope | Full surface | Event archives and time-range replay are outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Rule: event pattern (JSON matcher)                  | Rules     | Partial      | Common       | The adapter evaluates nested detail fields, \$or, prefix and suffix (including their case-insensitive forms), equals-ignore-case, wildcard with escaped asterisks, anything-but with values, prefix, suffix, wildcard and case-insensitive forms, numeric ranges, exists, and IPv4 and IPv6 cidr. Invalid patterns are refused with EventBridge's reasons. Case-insensitive comparison covers ASCII letters only. Check each operator used by the application.                                                                                                                                                                                                                                                                                                                                                         |
| Rule: scheduled (cron / rate)                       | Rules     | Partial      | Most usage   | Rates and six-field UTC cron produce durable delivery work. Cron supports values, lists, ranges including wrapping ranges, steps, names, ?, L, L-n, LW, nW, nL and n#k. PutRule refuses the expressions EventBridge refuses, and also refuses a few forms EventBridge accepts but whose firing times are undocumented: a step of zero, # on a range or a day outside 1-7, W on a range, and L-n or ranged L in day-of-week. Schedules are allowed only on the default bus. Missed occurrences are not backfilled. This covers scheduled rules, not the separate EventBridge Scheduler service.                                                                                                                                                                                                                         |
| DLQ + retry policy on targets                       | Targets   | Partial      | Most usage   | Retries use each target's attempt and event-age limits; age starts at acceptance. Delivery is at least once. Terminal dispatch failures can record durable work for an SQS dead-letter queue, whose sends retry separately and can also produce duplicates. The queue receives the rendered target payload with EventBridge's ERROR\_CODE, ERROR\_MESSAGE, RULE\_ARN and TARGET\_ARN attributes, plus RETRY\_ATTEMPTS and EXHAUSTED\_RETRY\_CONDITION when a retry limit was reached. Error codes other than permission, missing-resource and connection failures are reported as UNKNOWN. Exhausted dead-letter sends need operator attention; a configured queue does not guarantee that every failure reaches it. Lambda synchronous fallback uses this policy instead of Lambda asynchronous failure destinations. |
| Target input (constant / input\_path / transformer) | Targets   | Partial      | Full surface | Targets receive the event envelope, constant Input, an InputPath selection or an InputTransformer result. JSON paths support the root, dotted members and nonnegative array indices. Wildcards, filters, slices, recursive descent and quoted members are refused. Template variables must be declared; AWS reserved-variable coverage differs. As in EventBridge, an InputPath that selects nothing delivers \{}, and a transformer variable whose path selects nothing renders as an empty value.                                                                                                                                                                                                                                                                                                                    |
| Targets (fan a rule to N targets)                   | Targets   | Partial      | Common       | Each matched rule-target pair has independent delivery work, including rules sharing a destination. SQS, SNS and Lambda require configured endpoints and permission to call the destination. HTTP targets receive an unsigned POST; EventBridge Connections and API Destinations are outside this mapping. Lambda receivers that refuse asynchronous invocation use synchronous fallback, with function failures handled by the EventBridge retry policy. PutTargets refuses RoleArn, EcsParameters, SqsParameters, HttpParameters, KinesisParameters, BatchParameters, RedshiftDataParameters, SageMakerPipelineParameters, AppSyncParameters and RunCommandParameters with ValidationException; the whole request fails without storing its targets.                                                                 |

#### PostgreSQL hosting

Microsoft operates Azure Database for PostgreSQL Flexible Server. The Cloud Adapter deployment provisions one server, injected into the Cloud Adapter deployment's virtual network with no public endpoint, and every connection uses TLS. The PostgreSQL major version is fixed when the Cloud Adapter deployment is set up; Microsoft applies maintenance in its own window, which restarts the server. Automated backups keep seven days of history with point-in-time restore inside that window; geo-redundant backup is off. The server runs in a single availability zone without a zone-redundant standby, so a restart for maintenance or failure makes PutEvents return errors and stops delivery until the server returns. Committed events and pending deliveries are still there afterwards.

EventBridge state lives in one database on that server. The SQS and SNS adapters on the same Cloud Adapter deployment use the same database when they run on PostgreSQL, and the Cloud Adapter deployment's own state store is a separate database on the same server. Because an event bus declares no database size, the server has a fixed default size; connections, storage and throughput are shared limits, so watch them alongside pending delivery work.

When the Cloud Adapter deployment is set up, the administrator password is generated and the connection string is stored in the Cloud Adapter deployment's Azure Key Vault; the adapter's identity can read that one secret and nothing else in the vault, and the application never handles it. Removing the Cloud Adapter deployment removes the server and the EventBridge state on it, so drain pending work first. Buses start empty, and existing AWS history is not migrated.

#### Accepting and matching events

Tensor9 serves EventBridge APIs with PostgreSQL holding buses, rules, targets, accepted events and pending delivery work. Terraform declarations and authenticated API calls address the same records within an account. Configure the application client to use the EventBridge endpoint and credentials for the target environment.

For each event on an existing bus, the adapter evaluates enabled rules on that bus and commits the event with one delivery record per matched rule and target. Two rules sharing a destination produce separate deliveries. Entries commit separately. A batch request can fail after earlier entries have committed, so retrying the batch can duplicate events. Destination delivery happens afterward.

A nonexistent bus can return an event ID without storing or delivering the event. Confirm the bus exists before switching producers; an event ID alone does not establish durable work.

The matcher evaluates nested objects, scalar and array values, the alternatives operator, prefix and suffix with their case-insensitive forms, equals-ignore-case, wildcard with escaped asterisks, numeric ranges, exists, IPv4 and IPv6 cidr, and anything-but with values, prefix, suffix, wildcard and case-insensitive forms. It runs in the adapter, so rules can inspect nested detail data without promoting it to broker attributes. Invalid patterns are refused with EventBridge's reasons. Case-insensitive comparison covers ASCII letters only.

#### Destination calls and payloads

Workers claim delivery records and call the configured destination. SQS, SNS and Lambda calls use signed service requests. Each destination needs a reachable endpoint and permission for its operation: SendMessage, Publish or InvokeFunction. Do not assume an SQS delivery role also grants SNS or Lambda access. Direct HTTP targets receive an unsigned POST; EventBridge Connections and managed API Destinations are outside this mapping.

By default, a target receives the EventBridge envelope, including id, source, detail-type, time, region, account, resources and detail. A target can instead use constant Input, an InputPath selection or an InputTransformer template. Selection modes are mutually exclusive. JSON paths support the root, dotted members and nonnegative array indices. Unsupported path syntax is refused when configuring targets. Template variables must be declared; do not assume all AWS reserved variables are available. As in EventBridge, an InputPath that selects nothing delivers an empty JSON object, and a template variable whose path selects nothing renders as an empty value.

Lambda calls first request asynchronous invocation. A receiver that explicitly refuses it uses synchronous fallback. With that fallback, function errors follow the EventBridge target retry policy, and Lambda asynchronous failure destinations do not apply. Deliveries in a claimed batch are sent concurrently, so a slow function does not hold the others in its batch, though the slowest send, up to a per-send deadline, delays the next batch.

#### Recovery, retries and dead letters

Accepted delivery work survives a process restart. Work a stopped worker had claimed resumes when that claim expires, which can take up to about five minutes. A worker can retry after a lease expires, including when the destination accepted the preceding call but the worker failed before recording success. Delivery is at least once with no ordering guarantee. Use an application event key to make destination side effects safe to repeat.

Each target can set its retry count and event-age limit. Age is measured from acceptance, rather than from the event's supplied time. The default attempt budget differs from AWS. One target's retry state is independent of another target's success.

Terminal dispatch failures with a configured SQS dead-letter queue record the failed delivery and pending dead-letter send in one database transaction. A separate worker sends the rendered target payload to that queue with EventBridge's ERROR\_CODE, ERROR\_MESSAGE, RULE\_ARN and TARGET\_ARN message attributes, adding RETRY\_ATTEMPTS and EXHAUSTED\_RETRY\_CONDITION when a retry or age limit ran out. Error codes other than permission, missing-resource and connection failures are reported as UNKNOWN. Dead-letter arrival is asynchronous and can also be duplicated after a crash. Queue failures retry separately, but exhausting that budget leaves work requiring operator attention. A configured dead-letter queue is therefore not a guarantee that every failed event arrives there.

#### Scheduled rules

A database-backed schedule driver creates the same durable work used for matched events. It supports rates and six-field UTC cron, including values, ranges that wrap, lists, steps, names, the question-mark day selector, and the L, L-n, LW, nW, nL and n#k calendar forms.

PutRule validates expressions as EventBridge does and allows schedules only on the default bus. It also refuses a few forms EventBridge accepts whose firing times are undocumented: a step of zero, # on a range or on a day outside 1-7, W on a range, and L-n or a ranged L in the day-of-week field. A rate too long to schedule within the database's calendar is accepted and never fires. Missed occurrences during downtime are not backfilled, and re-enabling a rule does not replay its disabled intervals. This mapping covers EventBridge scheduled rules; the separate EventBridge Scheduler service is outside its scope.

#### Limitations

PutTargets refuses per-target RoleArn and service-specific parameter objects, including FIFO SqsParameters, ECS and HTTP parameters. A request containing an unsupported target field fails as a whole. Review the operation table before migrating those declarations.

Workers resolve queued deliveries against target configuration when claiming work. Updating a target can change where pending work goes; an already claimed delivery may still use the previous configuration. Disabling a rule stops new matching but does not cancel accepted work. Drain pending deliveries before deleting and recreating a target with the same name.

Event archives, replay, cross-account and cross-region routing, customer KMS keys per bus, Pipes and the schema registry are outside this mapping. Durable delivery records do not provide an application-facing event archive. Case-insensitive pattern matching covers ASCII letters only.

#### Other considerations

Tensor9 operates the service adapter, matcher, delivery workers and scheduler. Database availability, backups and capacity follow the selected PostgreSQL deployment. Configure database access and destination permissions as part of the deployment, then check received payloads as well as successful PutEvents responses.

Provision buses, rules and targets before switching producers. Existing AWS history and pending deliveries are not copied. Keep source destinations available while their pending work finishes. Monitor pending work, retries, terminal failures and failed dead-letter sends separately; a successful publish does not establish successful delivery.

### Azure Event Grid

| Operation                                           | Area      | Support      | Depth        | Notes                                                                                                                                                                                                                                                             |
| --------------------------------------------------- | --------- | ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cross-account / cross-region buses                  | Bus       | Out of scope | Full surface | Cross-account and cross-region bus routing is outside this mapping.                                                                                                                                                                                               |
| Event bus (default + custom)                        | Bus       | Out of scope | Common       | A native topic is the storage counterpart of a bus. EventBridge delivery through Azure Event Grid is outside this profile's offered contract. Use the PostgreSQL service adapter for the EventBridge runtime.                                                     |
| Event bus SSE (customer KMS key)                    | Bus       | Out of scope | Full surface | A customer-managed KMS key per bus is unsupported. Configure encryption on the backing store.                                                                                                                                                                     |
| Schema registry / EventBridge Pipes                 | Ecosystem | Out of scope | Full surface | The schema registry and EventBridge Pipes are separate services outside this mapping.                                                                                                                                                                             |
| PutEvents                                           | Publish   | Out of scope | Common       | Native publication does not expose the EventBridge PutEvents contract. EventBridge delivery through Azure Event Grid is outside this profile's offered contract. Use the PostgreSQL service adapter for the EventBridge runtime.                                  |
| Archive + replay                                    | Replay    | Out of scope | Full surface | Event archives and time-range replay are outside this mapping.                                                                                                                                                                                                    |
| Rule: event pattern (JSON matcher)                  | Rules     | Out of scope | Common       | Event Grid advanced filters cover numeric and string conditions on supported fields, with their own syntax and limits. They do not cover the complete EventBridge pattern language.                                                                               |
| Rule: scheduled (cron / rate)                       | Rules     | Out of scope | Most usage   | Scheduled rules require a separate scheduler and destination delivery mechanism; they are outside this mapping.                                                                                                                                                   |
| DLQ + retry policy on targets                       | Targets   | Out of scope | Most usage   | Event Grid topic subscriptions have native retry and event-age policies and can dead-letter to Blob Storage. That does not implement an EventBridge target's SQS dead-letter contract.                                                                            |
| Target input (constant / input\_path / transformer) | Targets   | Out of scope | Full surface | EventBridge Input, InputPath and InputTransformer behavior is outside this mapping.                                                                                                                                                                               |
| Targets (fan a rule to N targets)                   | Targets   | Out of scope | Common       | Native broker delivery does not establish EventBridge target authorization, payload or retry semantics. EventBridge delivery through Azure Event Grid is outside this profile's offered contract. Use the PostgreSQL service adapter for the EventBridge runtime. |

#### Scope of this relation

EventBridge delivery through Azure Event Grid is outside this profile's offered contract. Use the PostgreSQL service adapter for EventBridge buses, rules and durable target delivery. This comparison explains the native Event Grid mechanisms and their differences.

#### Topics, filters and handlers

An Event Grid topic can represent events as CloudEvents. Event subscriptions apply advanced filters and deliver matches to handlers. Advanced filters support numeric and string conditions on supported fields, with syntax and limits that differ from EventBridge. A matching field name does not establish equivalent pattern behavior.

An EventBridge mapping also needs an adapter for the EventBridge API and handlers that preserve target payload selection, destination permissions and delivery outcomes. Event Grid topic acceptance alone does not establish successful SQS, SNS or Lambda delivery.

#### Limitations

Event Grid topic subscriptions use their own retry and event-age policies. Dead letters can be written to Blob Storage, which differs from an EventBridge target's SQS dead-letter queue. See [Event Grid delivery and retry](https://learn.microsoft.com/en-us/azure/event-grid/delivery-and-retry) for the native contract.

Scheduled rules need a separate scheduler and destination delivery mechanism. Container Apps job schedules alone do not provide those EventBridge semantics. Scheduled rules, target transformations, archives, replay, Pipes and the schema registry are outside this mapping.

#### Other considerations

Microsoft operates Event Grid topic storage and native delivery. Handlers still require authentication, network access and duplicate-safe processing. Review those responsibilities separately from the native broker's retry policy when evaluating a migration.

### Container Apps

| Operation                                                  | Area      | Support      | Depth        | Notes                                                                                                                                                                                                                                                                               |
| ---------------------------------------------------------- | --------- | ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event bus + PutEvents                                      | Bus       | Out of scope | Common       | This infrastructure mapping provides no event bus or EventBridge request endpoint.                                                                                                                                                                                                  |
| Archive + replay / Pipes / schema registry / cross-account | Ecosystem | Out of scope | Full surface | These EventBridge capabilities are outside this schedule-only mapping.                                                                                                                                                                                                              |
| Rule: event pattern (JSON matcher)                         | Rules     | Out of scope | Common       | Deployment refuses event-pattern rules. Use the PostgreSQL adapter for supported event patterns.                                                                                                                                                                                    |
| Rule: scheduled (cron / rate)                              | Rules     | Partial      | Common       | Infrastructure translation creates a scheduled Container Apps Job for representable cron and rate expressions. The job uses five-field UTC cron; deployment rejects expressions it cannot represent. This covers the schedule configuration, not delivery to an EventBridge target. |
| DLQ + retry policy on targets                              | Targets   | Out of scope | Most usage   | EventBridge target retry and dead-letter delivery are outside this mapping. Job retries and queue redrive are separate policies.                                                                                                                                                    |
| Target input (constant / input\_path / transformer)        | Targets   | Out of scope | Full surface | Deployment refuses target input overrides, input paths and transformers.                                                                                                                                                                                                            |
| Target: SNS / Lambda / non-SQS                             | Targets   | Out of scope | Full surface | Deployment refuses non-SQS target declarations.                                                                                                                                                                                                                                     |
| Target: SQS                                                | Targets   | Out of scope | Common       | Scheduled target delivery is outside this mapping. A configured job schedule does not send an event to SQS. Use the PostgreSQL adapter for scheduled EventBridge delivery.                                                                                                          |

#### Scheduled-job configuration

This infrastructure translation turns supported EventBridge scheduled-rule declarations into Azure Container Apps Jobs. It covers the job's schedule configuration. It provides no EventBridge request endpoint, event bus or scheduled target delivery.

Use the PostgreSQL service adapter when the application needs EventBridge matching, publication and delivery. A job schedule alone does not send the scheduled event to SQS.

#### Cron and rate translation

Container Apps scheduled jobs use five-field cron in UTC. The translation handles representable AWS six-field cron and rate expressions and rejects expressions it cannot preserve. Review the emitted schedule and allow for job startup time; a scheduled trigger does not guarantee immediate processing.

See [Container Apps jobs](https://learn.microsoft.com/en-us/azure/container-apps/jobs) for the native scheduling and execution model.

#### Limitations

Deployment refuses event-pattern rules, non-SQS target declarations and target input overrides, including constant input, input paths and transformers. Accepting an SQS target declaration does not establish target delivery.

EventBridge retry and dead-letter delivery are outside this mapping. Container Apps job retries and SQS queue redrive are separate policies. Archives, replay, Pipes, the schema registry and cross-account bus routing are also outside scope.

#### Other considerations

Microsoft operates job execution. Estimate compute use from schedule frequency, run duration and allocated resources. Application processing needs its own executable, destination credentials and network access; these responsibilities are separate from schedule translation.

## On Google Cloud

### Cloud SQL for PostgreSQL

| Operation                                           | Area      | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------------------- | --------- | ------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cross-account / cross-region buses                  | Bus       | Out of scope | Full surface | Cross-account and cross-region bus routing is outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Event bus (default + custom)                        | Bus       | Supported    | Common       | Terraform bus, rule and target declarations and EventBridge API calls use the same PostgreSQL records within the authenticated account. Custom buses are stored durably; the default bus is available per account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Event bus SSE (customer KMS key)                    | Bus       | Out of scope | Full surface | A customer-managed KMS key per bus is unsupported. Configure encryption on the backing store.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Schema registry / EventBridge Pipes                 | Ecosystem | Out of scope | Full surface | The schema registry and EventBridge Pipes are separate services outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| PutEvents                                           | Publish   | Partial      | Common       | On an existing bus, each event and its matched rule-target delivery records commit in one transaction. Entries commit separately; a request failure can follow earlier commits, so retrying the batch can duplicate events. A nonexistent bus returns an event ID without storing or delivering the event, as EventBridge does. Confirm the bus exists before switching producers. Entries are validated as EventBridge validates them, and each refused entry is reported with EventBridge's error code while the rest of the batch is accepted. A bus can be named by ARN within the calling account and Region.                                                                                                                                                                                                     |
| Archive + replay                                    | Replay    | Out of scope | Full surface | Event archives and time-range replay are outside this mapping.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Rule: event pattern (JSON matcher)                  | Rules     | Partial      | Common       | The adapter evaluates nested detail fields, \$or, prefix and suffix (including their case-insensitive forms), equals-ignore-case, wildcard with escaped asterisks, anything-but with values, prefix, suffix, wildcard and case-insensitive forms, numeric ranges, exists, and IPv4 and IPv6 cidr. Invalid patterns are refused with EventBridge's reasons. Case-insensitive comparison covers ASCII letters only. Check each operator used by the application.                                                                                                                                                                                                                                                                                                                                                         |
| Rule: scheduled (cron / rate)                       | Rules     | Partial      | Most usage   | Rates and six-field UTC cron produce durable delivery work. Cron supports values, lists, ranges including wrapping ranges, steps, names, ?, L, L-n, LW, nW, nL and n#k. PutRule refuses the expressions EventBridge refuses, and also refuses a few forms EventBridge accepts but whose firing times are undocumented: a step of zero, # on a range or a day outside 1-7, W on a range, and L-n or ranged L in day-of-week. Schedules are allowed only on the default bus. Missed occurrences are not backfilled. This covers scheduled rules, not the separate EventBridge Scheduler service.                                                                                                                                                                                                                         |
| DLQ + retry policy on targets                       | Targets   | Partial      | Most usage   | Retries use each target's attempt and event-age limits; age starts at acceptance. Delivery is at least once. Terminal dispatch failures can record durable work for an SQS dead-letter queue, whose sends retry separately and can also produce duplicates. The queue receives the rendered target payload with EventBridge's ERROR\_CODE, ERROR\_MESSAGE, RULE\_ARN and TARGET\_ARN attributes, plus RETRY\_ATTEMPTS and EXHAUSTED\_RETRY\_CONDITION when a retry limit was reached. Error codes other than permission, missing-resource and connection failures are reported as UNKNOWN. Exhausted dead-letter sends need operator attention; a configured queue does not guarantee that every failure reaches it. Lambda synchronous fallback uses this policy instead of Lambda asynchronous failure destinations. |
| Target input (constant / input\_path / transformer) | Targets   | Partial      | Full surface | Targets receive the event envelope, constant Input, an InputPath selection or an InputTransformer result. JSON paths support the root, dotted members and nonnegative array indices. Wildcards, filters, slices, recursive descent and quoted members are refused. Template variables must be declared; AWS reserved-variable coverage differs. As in EventBridge, an InputPath that selects nothing delivers \{}, and a transformer variable whose path selects nothing renders as an empty value.                                                                                                                                                                                                                                                                                                                    |
| Targets (fan a rule to N targets)                   | Targets   | Partial      | Common       | Each matched rule-target pair has independent delivery work, including rules sharing a destination. SQS, SNS and Lambda require configured endpoints and permission to call the destination. HTTP targets receive an unsigned POST; EventBridge Connections and API Destinations are outside this mapping. Lambda receivers that refuse asynchronous invocation use synchronous fallback, with function failures handled by the EventBridge retry policy. PutTargets refuses RoleArn, EcsParameters, SqsParameters, HttpParameters, KinesisParameters, BatchParameters, RedshiftDataParameters, SageMakerPipelineParameters, AppSyncParameters and RunCommandParameters with ValidationException; the whole request fails without storing its targets.                                                                 |

#### PostgreSQL hosting

Google operates Cloud SQL for PostgreSQL. The Cloud Adapter deployment provisions one instance with no public IP address, reached only through a Private Service Connect endpoint inside the Cloud Adapter deployment's network, and every connection uses TLS. The PostgreSQL major version is fixed when the Cloud Adapter deployment is set up; Google applies maintenance in its own window, which restarts the instance. Daily automated backups run with point-in-time recovery, keeping seven days of transaction logs and seven backups. The instance runs in a single zone without a regional standby, so a restart for maintenance or failure makes PutEvents return errors and stops delivery until the instance returns. Committed events and pending deliveries are still there afterwards.

EventBridge state lives in one database on that instance. The SQS and SNS adapters on the same Cloud Adapter deployment use the same database when they run on PostgreSQL, and the Cloud Adapter deployment's own state store is a separate database on the same instance. Because an event bus declares no database size, the instance has a fixed, shared-core default machine size; connections, storage and throughput are shared limits, so watch them alongside pending delivery work.

When the Cloud Adapter deployment is set up, a dedicated database user and password are generated and the connection string is stored in the Cloud Adapter deployment's Secret Manager, where the adapter resolves it; the application never handles it. Removing the Cloud Adapter deployment removes the instance and the EventBridge state on it, so drain pending work first. Buses start empty, and existing AWS history is not migrated.

#### Accepting and matching events

Tensor9 serves EventBridge APIs with PostgreSQL holding buses, rules, targets, accepted events and pending delivery work. Terraform declarations and authenticated API calls address the same records within an account. Configure the application client to use the EventBridge endpoint and credentials for the target environment.

For each event on an existing bus, the adapter evaluates enabled rules on that bus and commits the event with one delivery record per matched rule and target. Two rules sharing a destination produce separate deliveries. Entries commit separately. A batch request can fail after earlier entries have committed, so retrying the batch can duplicate events. Destination delivery happens afterward.

A nonexistent bus can return an event ID without storing or delivering the event. Confirm the bus exists before switching producers; an event ID alone does not establish durable work.

The matcher evaluates nested objects, scalar and array values, the alternatives operator, prefix and suffix with their case-insensitive forms, equals-ignore-case, wildcard with escaped asterisks, numeric ranges, exists, IPv4 and IPv6 cidr, and anything-but with values, prefix, suffix, wildcard and case-insensitive forms. It runs in the adapter, so rules can inspect nested detail data without promoting it to broker attributes. Invalid patterns are refused with EventBridge's reasons. Case-insensitive comparison covers ASCII letters only.

#### Destination calls and payloads

Workers claim delivery records and call the configured destination. SQS, SNS and Lambda calls use signed service requests. Each destination needs a reachable endpoint and permission for its operation: SendMessage, Publish or InvokeFunction. Do not assume an SQS delivery role also grants SNS or Lambda access. Direct HTTP targets receive an unsigned POST; EventBridge Connections and managed API Destinations are outside this mapping.

By default, a target receives the EventBridge envelope, including id, source, detail-type, time, region, account, resources and detail. A target can instead use constant Input, an InputPath selection or an InputTransformer template. Selection modes are mutually exclusive. JSON paths support the root, dotted members and nonnegative array indices. Unsupported path syntax is refused when configuring targets. Template variables must be declared; do not assume all AWS reserved variables are available. As in EventBridge, an InputPath that selects nothing delivers an empty JSON object, and a template variable whose path selects nothing renders as an empty value.

Lambda calls first request asynchronous invocation. A receiver that explicitly refuses it uses synchronous fallback. With that fallback, function errors follow the EventBridge target retry policy, and Lambda asynchronous failure destinations do not apply. Deliveries in a claimed batch are sent concurrently, so a slow function does not hold the others in its batch, though the slowest send, up to a per-send deadline, delays the next batch.

#### Recovery, retries and dead letters

Accepted delivery work survives a process restart. Work a stopped worker had claimed resumes when that claim expires, which can take up to about five minutes. A worker can retry after a lease expires, including when the destination accepted the preceding call but the worker failed before recording success. Delivery is at least once with no ordering guarantee. Use an application event key to make destination side effects safe to repeat.

Each target can set its retry count and event-age limit. Age is measured from acceptance, rather than from the event's supplied time. The default attempt budget differs from AWS. One target's retry state is independent of another target's success.

Terminal dispatch failures with a configured SQS dead-letter queue record the failed delivery and pending dead-letter send in one database transaction. A separate worker sends the rendered target payload to that queue with EventBridge's ERROR\_CODE, ERROR\_MESSAGE, RULE\_ARN and TARGET\_ARN message attributes, adding RETRY\_ATTEMPTS and EXHAUSTED\_RETRY\_CONDITION when a retry or age limit ran out. Error codes other than permission, missing-resource and connection failures are reported as UNKNOWN. Dead-letter arrival is asynchronous and can also be duplicated after a crash. Queue failures retry separately, but exhausting that budget leaves work requiring operator attention. A configured dead-letter queue is therefore not a guarantee that every failed event arrives there.

#### Scheduled rules

A database-backed schedule driver creates the same durable work used for matched events. It supports rates and six-field UTC cron, including values, ranges that wrap, lists, steps, names, the question-mark day selector, and the L, L-n, LW, nW, nL and n#k calendar forms.

PutRule validates expressions as EventBridge does and allows schedules only on the default bus. It also refuses a few forms EventBridge accepts whose firing times are undocumented: a step of zero, # on a range or on a day outside 1-7, W on a range, and L-n or a ranged L in the day-of-week field. A rate too long to schedule within the database's calendar is accepted and never fires. Missed occurrences during downtime are not backfilled, and re-enabling a rule does not replay its disabled intervals. This mapping covers EventBridge scheduled rules; the separate EventBridge Scheduler service is outside its scope.

#### Limitations

PutTargets refuses per-target RoleArn and service-specific parameter objects, including FIFO SqsParameters, ECS and HTTP parameters. A request containing an unsupported target field fails as a whole. Review the operation table before migrating those declarations.

Workers resolve queued deliveries against target configuration when claiming work. Updating a target can change where pending work goes; an already claimed delivery may still use the previous configuration. Disabling a rule stops new matching but does not cancel accepted work. Drain pending deliveries before deleting and recreating a target with the same name.

Event archives, replay, cross-account and cross-region routing, customer KMS keys per bus, Pipes and the schema registry are outside this mapping. Durable delivery records do not provide an application-facing event archive. Case-insensitive pattern matching covers ASCII letters only.

#### Other considerations

Tensor9 operates the service adapter, matcher, delivery workers and scheduler. Database availability, backups and capacity follow the selected PostgreSQL deployment. Configure database access and destination permissions as part of the deployment, then check received payloads as well as successful PutEvents responses.

Provision buses, rules and targets before switching producers. Existing AWS history and pending deliveries are not copied. Keep source destinations available while their pending work finishes. Monitor pending work, retries, terminal failures and failed dead-letter sends separately; a successful publish does not establish successful delivery.

### Google Pub/Sub

| Operation                                           | Area      | Support      | Depth        | Notes                                                                                                                                                                                                                                                                 |
| --------------------------------------------------- | --------- | ------------ | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cross-account / cross-region buses                  | Bus       | Out of scope | Full surface | Cross-account and cross-region bus routing is outside this mapping.                                                                                                                                                                                                   |
| Event bus (default + custom)                        | Bus       | Out of scope | Common       | A native topic is the storage counterpart of a bus. EventBridge delivery through Google Cloud Pub/Sub is outside this profile's offered contract. Use the PostgreSQL service adapter for the EventBridge runtime.                                                     |
| Event bus SSE (customer KMS key)                    | Bus       | Out of scope | Full surface | A customer-managed KMS key per bus is unsupported. Configure encryption on the backing store.                                                                                                                                                                         |
| Schema registry / EventBridge Pipes                 | Ecosystem | Out of scope | Full surface | The schema registry and EventBridge Pipes are separate services outside this mapping.                                                                                                                                                                                 |
| PutEvents                                           | Publish   | Out of scope | Common       | Native publication does not expose the EventBridge PutEvents contract. EventBridge delivery through Google Cloud Pub/Sub is outside this profile's offered contract. Use the PostgreSQL service adapter for the EventBridge runtime.                                  |
| Archive + replay                                    | Replay    | Out of scope | Full surface | Event archives and time-range replay are outside this mapping.                                                                                                                                                                                                        |
| Rule: event pattern (JSON matcher)                  | Rules     | Out of scope | Common       | Pub/Sub filters message attributes, not the message body. Promoting source and detail-type to attributes can cover simple rules; nested EventBridge detail matching needs additional processing.                                                                      |
| Rule: scheduled (cron / rate)                       | Rules     | Out of scope | Most usage   | Scheduled rules require a separate scheduler and destination delivery mechanism; they are outside this mapping.                                                                                                                                                       |
| DLQ + retry policy on targets                       | Targets   | Out of scope | Most usage   | Pub/Sub subscription redelivery and dead-letter topics have different semantics from EventBridge target retries and an SQS dead-letter queue. They do not establish destination success or EventBridge event-age limits.                                              |
| Target input (constant / input\_path / transformer) | Targets   | Out of scope | Full surface | EventBridge Input, InputPath and InputTransformer behavior is outside this mapping.                                                                                                                                                                                   |
| Targets (fan a rule to N targets)                   | Targets   | Out of scope | Common       | Native broker delivery does not establish EventBridge target authorization, payload or retry semantics. EventBridge delivery through Google Cloud Pub/Sub is outside this profile's offered contract. Use the PostgreSQL service adapter for the EventBridge runtime. |

#### Scope of this relation

EventBridge delivery through Google Cloud Pub/Sub is outside this profile's offered contract. Use the PostgreSQL service adapter for EventBridge buses, rules and durable target delivery. This comparison explains the native Pub/Sub mechanisms and the differences that matter when evaluating an EventBridge mapping.

#### Topics, filters and destination delivery

A Pub/Sub topic is the natural counterpart of an event bus, with subscriptions selecting messages for consumers. Pub/Sub filters inspect message attributes, not the message body. Promoting source and detail-type to attributes can express simple conditions; nested EventBridge detail matching requires additional processing. See [Pub/Sub message filtering](https://cloud.google.com/pubsub/docs/subscription-message-filter).

An EventBridge mapping also needs a service adapter to accept PutEvents and manage rules, plus workers that apply target input selection and call authorized destinations. A broker's acknowledgment is distinct from completion of that destination call.

#### Limitations

Native subscription redelivery and dead-letter topics do not establish EventBridge per-target retry, event-age or SQS dead-letter semantics. A separate scheduler, such as Cloud Scheduler, would also need to preserve rule timing and destination behavior. These capabilities are outside this mapping, as are archives, replay, Pipes and the schema registry.

#### Other considerations

Google operates Pub/Sub storage and subscription redelivery. Application consumers still need authentication, network access and duplicate-safe processing. Evaluate native Pub/Sub with those responsibilities in view; its broker features alone do not establish EventBridge API compatibility or target delivery.

## Existing data and credentials

Selecting a backend does not copy existing data, credentials or access policies. Plan and verify migration separately before changing an application's endpoint. Do not assume an identifier, credential or encrypted value from the origin service works unchanged on the target.

## Configure, tune and debug

Start with [setup](/cloud-adapter/getting-started/overview) and [configuration](/cloud-adapter/configuration/overview). Use [tuning](/cloud-adapter/tuning/overview) to understand supported request tags, [debugging](/cloud-adapter/debugging/overview) to investigate a request, and [High Fidelity Cloud Emulators](/cloud-adapter/local-testing/overview) to validate a bounded reproduction.
