Introducción: Cuando EventBridge entrega mensajes a su destino pueden existir múltiples causas que impidan el envío correcto. Problemas de permisos, límites de tasa, indisponibilidad del destino o incluso fallos transitorios en AWS son ejemplos comunes. Sea cual sea la causa, es ideal recibir una notificación indicando que hubo un problema al entregar mensajes y la razón del fallo.
Qué es una dead letter queue: Las colas de mensajes no entregados son componentes sencillos pero muy valiosos en arquitecturas orientadas a eventos. Son fáciles de configurar, económicas y mejoran notablemente la resiliencia del sistema. A continuación explico cómo capturar fallos de entrega a destinos en EventBridge usando una dead letter queue o DLQ.
DLQ a nivel del bus de EventBridge: EventBridge permite asociar una DLQ al bus, pero su uso está limitado a errores relacionados con el cifrado KMS. EventBridge envía a esa DLQ los eventos que no se han podido cifrar correctamente. Este ajuste de DLQ aparece en la consola de EventBridge únicamente cuando se utiliza una clave KMS gestionada por el cliente y forma parte de la configuración de cifrado. Importante: esta DLQ no captura fallos de entrega al destino, por lo que no sirve para detectar errores de destino.
DLQ a nivel de objetivo: Para capturar fallos de entrega a un destino concreto, se debe configurar una cola SQS como DLQ en la configuración del objetivo de la regla de EventBridge. Una regla puede tener varios destinos y cada destino puede tener su propia DLQ. Es posible reutilizar la misma SQS como DLQ para varios destinos, pero hay que asociarla explícitamente a cada objetivo. Si se utiliza infraestructura como código como SAM, CloudFormation o CDK, la repetición se automatiza y no supone un esfuerzo significativo.
Cómo funciona a alto nivel: EventBus intenta entregar un evento al destino configurado mediante una regla. Si, por ejemplo, existe un problema de permisos y la entrega falla, EventBridge colocará el mensaje en la DLQ asignada a ese objetivo. Se puede crear una alarma en CloudWatch que monitorice la métrica de número de mensajes en la cola DLQ. Cuando la alarma detecta mensajes en la DLQ, puede activar una acción que publique en un tema SNS y notifique a los suscriptores por correo u otros mecanismos. En la cola DLQ se puede revisar el mensaje fallido y, en los atributos del mensaje, a menudo aparece información sobre la causa del fallo.
Ejemplo práctico: He preparado una plantilla SAM para desplegar este escenario en tu cuenta AWS. Clona el repositorio https://github.com/pubudusj/event-bridge-target-failure-detection-with-dlq y luego ejecuta un despliegue como el siguiente en una sola línea: sam deploy --template-file template.yaml --stack-name event-bridge-target-failure-detection-with-dlq --capabilities CAPABILITY_IAM --no-confirm-changeset --parameter-overrides NotificationEmail=[TuDireccionDeCorreo]. Añade tu correo en NotificationEmail para recibir notificaciones cuando falle la entrega al destino. Tras el despliegue recibirás un correo de confirmación de suscripción SNS que debes confirmar para empezar a recibir alertas. Publica un evento en el bus creado con source igual a xyzcorp para que la regla intente entregar el mensaje al objetivo. Si la entrega está bloqueada a propósito para simular la falla, en breve recibirás el correo con el estado de la alarma y podrás inspeccionar el mensaje en la DLQ para ver los atributos que expliquen el motivo del fallo. Puedes ajustar umbral, periodo y periodos de evaluación de la alarma para controlar la frecuencia de las notificaciones.
Resumen: El bus de EventBridge dispone de una DLQ pero su finalidad es específica al cifrado y no captura fallos de destino. Para detectar entregas fallidas a objetivos hay que configurar una DLQ por objetivo, usar una cola SQS, monitorizarla con CloudWatch y notificar con SNS. Esto requiere configuración por cada destino, por lo que es recomendable usar herramientas de infraestructura como código para simplificar el proceso. En la segunda parte de esta serie exploraré alternativas adicionales para detectar y gestionar estos fallos.
Sobre Q2BSTUDIO: En Q2BSTUDIO somos una empresa de desarrollo de software que ofrece aplicaciones a medida y software a medida, con especialización en inteligencia artificial, ciberseguridad y servicios cloud. Nuestro equipo ayuda a empresas a diseñar soluciones robustas en AWS y Azure y a integrar capacidades de inteligencia de negocio y power bi para extraer valor de sus datos. Si necesitas una solución de nube gestionada o asesoría en arquitecturas serverless y monitorización, consulta nuestros servicios cloud en servicios cloud aws y azure y descubre cómo desarrollamos aplicaciones customizadas en aplicaciones a medida y software a medida.
Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.