aws.crafter.run

EventBridge

Amazon EventBridge

Un bus de eventos que enruta por el contenido del mensaje: en vez de suscribirte a un canal, declaras un patrón sobre el JSON y EventBridge te manda lo que encaje.

Verificado el

Los tres conceptos

Si no entiendes estos tres, nada de lo demás encaja.

  1. 1

    Se enruta por contenido, no por canal

    En SNS te suscribes a un topic y recibes todo lo que se publique en él. Aquí publicas en un bus y escribes reglas con un patrón sobre el JSON del evento: "los pedidos de España por encima de 500 €". El productor no declara destinos y el consumidor no pide permiso — declara qué le interesa.

  2. 2

    Cinco destinos por regla, y es un muro

    Una regla puede tener como máximo 5 targets y ese límite no se amplía. No es un detalle administrativo: moldea el diseño. En cuanto un evento interesa a seis consumidores necesitas varias reglas, y eso cambia cómo organizas el bus.

  3. 3

    Archivo y repetición

    EventBridge puede archivar los eventos que pasan por un bus y reproducirlos después sobre una regla. Es lo que SNS estándar no tiene, y suele ser la razón real por la que se elige EventBridge: poder arreglar un consumidor con un bug de tres días y volver a pasarle esos tres días.

Los límites

Hard es un muro: no se sube ni con un ticket. Soft se amplía pidiéndolo — antes del pico, no durante.

ConceptoValorTipo
Destinos por reglaEl límite que moldea el diseño. No se amplía de ninguna manera.5hard
Reglas con comodinesSolo 30 reglas por bus pueden usar wildcards en sus patrones. No ajustable.30 por bushard
PutEvents — us-east-1, us-west-2, eu-west-110 000 por segundosoft
PutEvents — resto de regionesOhio, Fráncfort y España van a 2 400; Tokio, Irlanda-2, Sídney, Singapur y Londres a 1 200; muchas otras a 600. Fuera de las tres grandes, el suelo son 400.400 por segundosoft
Invocaciones — us-east-1, us-west-2, eu-west-1Una invocación es un evento que encaja con una regla y se envía a sus destinos.18 750 por segundosoft
Invocaciones — resto de regionesSuperado el límite no se pierden — se retrasan.750 por segundosoft
Reglas por bus100 en Ciudad del Cabo y Milán.300soft
Buses de eventos por cuenta100soft
Tamaño del patrón de evento2 048 caracteressoft
Política del bus de eventosCrece cada vez que das acceso a otra cuenta. Es el techo del multi-cuenta.10 240 caracteressoft
API destinations3 000 por cuentasoft
Invocaciones por API destination300 por segundosoft
API del plano de control50 por segundohard
Niveles de anidamiento en schema discoveryLo que esté más profundo se ignora.255hard
Conexiones privadas20 por cuentahard

Modelo mental

SNS y EventBridge resuelven el mismo problema —un productor, varios consumidores que no se conocen— y lo resuelven al revés el uno del otro.

En SNS el productor elige el canal: publica en el topic pedidos y quien esté suscrito a pedidos lo recibe todo. El acoplamiento no ha desaparecido, se ha movido: ahora está en el nombre del topic, y por eso los sistemas con SNS acaban con veinte topics y una convención de nombres que nadie recuerda.

En EventBridge el productor publica en un bus y ya está. Es el consumidor quien declara qué le interesa, con una regla que contiene un patrón sobre el JSON del evento:

{
  "detail-type": ["PedidoCreado"],
  "detail": {
    "pais": ["ES"],
    "importe": [{ "numeric": [">", 500] }]
  }
}

Nadie tuvo que crear un topic pedidos-españa-grandes. El productor no sabe que esa regla existe y no se entera si mañana desaparece.

Ese cambio de dirección es el que hace que EventBridge escale organizativamente: añadir un consumidor no toca nada de lo que ya existe, ni siquiera la configuración del productor. Es la razón por la que aparece en cuanto hay varios equipos publicando en el mismo sitio.

Lo que se paga a cambio

Tres cosas, y conviene tenerlas claras antes de elegirlo por moda:

El archivo es lo que suele decidir

EventBridge puede archivar todo lo que pasa por un bus y reproducirlo después. Eso es lo que SNS estándar no tiene y no va a tener: en SNS, un consumidor que estuvo tres días con un bug perdió tres días de eventos y no hay manera de recuperarlos.

Si alguna vez has tenido que pedir a otro equipo que te reenvíe eventos a mano, ya sabes cuánto vale esa casilla.

Cómo te factura

Por evento publicado, y con una asimetría que conviene conocer:

Concepto Precio aproximado
Eventos personalizados (los tuyos) ~1,00 USD / millón
Eventos de servicios de AWS al bus por defecto sin coste
Archivo y repetición por GB almacenado y por evento reproducido
API destinations por invocación

Comparado con SNS —del orden de 0,50 USD por millón de publicaciones, con las entregas a SQS y Lambda gratis— EventBridge sale claramente más caro por evento. La diferencia se paga por el enrutado por contenido, el archivo y el replay. Si no vas a usar ninguna de las tres, estás pagando de más.

Detalle útil: los eventos que generan los propios servicios de AWS hacia el bus por defecto no se facturan. Reaccionar a un cambio de estado de EC2 o a un Object Created de S3 es gratis; publicar tus propios eventos de dominio, no.

Cuándo NO usarlo

Errores comunes

Chocar contra los cinco destinos. Es el límite que más sorprende porque no se puede ampliar. La salida habitual es partir en varias reglas con el mismo patrón, o poner una cola en medio y hacer el fan-out ahí.

Suponer el throughput de us-east-1. Es el mismo error que con SNS y con API Gateway, y se repite porque todos los tutoriales están escritos en Virginia. Si despliegas en São Paulo, tu PutEvents va a 600 y tus invocaciones a 750.

Patrones que no caben. El patrón de evento tiene un techo de 2 048 caracteres. Una lista larga de valores permitidos lo agota rápido, y entonces toca dividir la regla.

Abusar de los comodines. Solo 30 reglas por bus pueden llevar wildcards en su patrón, y ese límite no se ajusta. Es un recurso escaso: gástalo donde haga falta de verdad.

Meter todo en el bus por defecto. El bus por defecto recibe además los eventos de todos los servicios de AWS de tu cuenta. Mezclar ahí tus eventos de dominio complica los patrones y complica los permisos. Crea un bus propio.

No poner DLQ en el destino. Si el destino falla, EventBridge reintenta y luego descarta. Cada target admite su propia cola de mensajes fallidos, y sin ella los eventos se pierden en silencio.

Olvidar el techo de la política del bus. Son 10 240 caracteres y crece cada vez que das acceso a otra cuenta. En una organización con muchas cuentas es un límite real, no teórico.

Fuentes

Todas las cuotas —destinos por regla, reglas con comodines, PutEvents e invocaciones por región, reglas y buses, tamaño de patrón y de política, API destinations y plano de control—, y qué se puede ampliar y qué no: Amazon EventBridge quotas. Cuotas de SNS usadas en la comparación: Amazon SNS endpoints and quotas. Los importes proceden de las páginas de precios de AWS, que se renderizan dinámicamente y no pudieron citarse literalmente: trátalos como orden de magnitud.

Dónde aparece esto