Módulo 9 · Eventos, colas y mensajería/Lección 57
EventBridge: el bus de eventos
Eventos de AWS, de tus apps y de terceros llegan a un bus; las reglas deciden a dónde va cada uno.
Un evento es un aviso de que algo pasó: una instancia se detuvo, alguien subió un archivo, un cliente pagó. Amazon EventBridge es un servicio serverless que recibe esos eventos en un bus y, según reglas que tú escribes, los envía a los destinos que deben reaccionar.
Pasa el mouse para ver qué es cada pieza; haz clic para abrir su ficha. En el celular, usa los botones de abajo.
Amazon EventBridge
Bus de eventos
AnalogíaLa central de despacho: recibe cada aviso y decide a quién mandarlo.
Un evento es un JSON con una fuente, un tipo y los datos. El bus lo compara con las reglas y lo entrega a cada destino que coincida.
Además de tus eventos, recibe los de los servicios de AWS y los de aplicaciones de terceros.
Buses, eventos, reglas y destinos
Bus de eventos
El canal que recibe los eventos. Puedes tener varios en una cuenta.Regla
Un patrón que describe qué eventos le interesan y a qué destinos enviarlos.Destinos
Lambda, colas de SQS, temas de SNS, Step Functions, otro bus, una API HTTP y muchos servicios más.
Hay tres tipos de bus:
- Default: cada cuenta tiene uno. Ahí llegan solos los eventos de los servicios de AWS.
- Custom: los que creas tú para los eventos de tus aplicaciones, como «pedido creado».
- Partner: reciben eventos de aplicaciones SaaS integradas con EventBridge, como herramientas de soporte, pagos o monitoreo, sin que tengas que montar webhooks.
Eventos en JSON y reglas con patrones
Todo evento es un documento JSON con campos comunes. Este lo genera EC2 cuando una instancia se detiene:
{
"source": "aws.ec2",
"detail-type": "EC2 Instance State-change Notification",
"detail": {
"instance-id": "i-0abc123def456",
"state": "stopped"
}
}Una regla tiene un patrón de evento con la misma forma. Si el evento coincide, la regla lo envía a sus destinos. Este patrón captura solo las instancias que se detienen:
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": { "state": ["stopped"] }
}Con esa regla y un tema de SNS como destino, el equipo recibe un aviso cada vez que una instancia se detiene. Sin código y sin servidores revisando el estado cada minuto.
Programar tareas con EventBridge Scheduler
No todo empieza con un evento. A veces necesitas que algo pase a cierta hora: un reporte cada lunes a las 7:00, apagar los ambientes de pruebas cada noche, recordarle a un cliente que su prueba gratis vence en tres días. EventBridge Scheduler crea programaciones con expresiones cron o rate, únicas o recurrentes, con zona horaria, que invocan un destino de AWS a la hora indicada. Es el reemplazo serverless del cron de un servidor.
EventBridge, SNS o SQS
| Criterio | |||
|---|---|---|---|
| Modelo | Bus con reglas que enrutan por contenido | Pub/sub: todos los suscriptores reciben | Cola: un consumidor procesa cada mensaje |
| Fuentes | Servicios de AWS, tus apps y socios SaaS | Tus apps y algunos servicios de AWS | Tus apps y algunos servicios de AWS, como S3 |
| Filtrado | Patrones ricos sobre cualquier campo del evento | Políticas de filtro por suscripción | No filtra; el consumidor recibe lo que hay |
| Guarda mensajes | No, salvo archivo para reproducir eventos | No | Sí, hasta 14 días |
| Elígelo para | Reaccionar a eventos de AWS o SaaS y enrutar entre muchos servicios | Avisar a muchos a la vez, incluidas personas por correo o SMS | Repartir trabajo y absorber picos |
No compiten: se combinan. Es común que una regla de EventBridge envíe a una cola de SQS para que el consumidor procese a su ritmo.
Cuando la reacción a un evento tiene varios pasos en orden, con reintentos y decisiones, entra Step Functions. Para el panorama completo, vuelve a desacoplar.
Quiz
Pon a prueba lo que aprendiste
0 de 5 correctas · 5 sin responder
1.Una empresa quiere ejecutar una función Lambda cada vez que una instancia EC2 cambia a estado «stopped». ¿Qué usa?
2.¿Qué tipo de bus recibe eventos de aplicaciones SaaS de terceros?
3.Necesitas generar un reporte todos los días a las 6:00 sin mantener un servidor con cron. ¿Qué servicio usas?
4.¿En qué formato llegan los eventos a un bus de EventBridge?
5.Quieres que los pedidos se procesen a ritmo propio y que ninguno se pierda si el procesador se cae. ¿Qué agregas como destino de la regla?