Amazon SNS
Simple Notification Service
Mensajería de publicación y suscripción: un mensaje publicado llega a todos los interesados a la vez.
En palabras simples
Es la lista de correo del club: quien publica escribe una sola vez y el mensaje llega a todas las personas suscritas, sin que el remitente sepa quiénes son.
Cuándo aplicarlo
Cuando un mismo evento debe avisar a varios destinos a la vez, o cuando hace falta enviar notificaciones a personas por correo o SMS.
- ▸Avisar a varios sistemas de que se registró una inscripción nueva
- ▸Enviar las alarmas de CloudWatch por correo al equipo
- ▸Disparar varias funciones Lambda con un mismo evento
- ▸Repartir mensajes a varias colas de SQS con el patrón de distribución en abanico
Vocabulario mínimo
- Tema (topic)
- El canal al que se publica. Quien publica no sabe ni le importa quién está suscrito.
- Suscripción
- Cada destino conectado al tema: una cola de SQS, una función Lambda, un correo, un HTTP, un SMS.
- Distribución en abanico (fan-out)
- El patrón de un mensaje publicado que llega a muchos suscriptores en paralelo.
- Filtro de suscripción
- La regla que hace que un suscriptor reciba solo los mensajes que cumplen ciertos atributos.
- Tema FIFO
- La variante que garantiza orden y entrega única, a costa de menor rendimiento.
Costo y capa gratuita
- Cómo se cobra
- Por millón de publicaciones y por entregas realizadas, con precios distintos según el destino. Las entregas hacia SQS y Lambda son muy baratas; el SMS es, de lejos, lo más caro.
- Capa gratuita
- Un millón de publicaciones al mes y un millón de entregas HTTP, más 1.000 correos, de forma permanente.
Cuidado con los créditos
- ⚠Las notificaciones por SMS se cobran por mensaje y por país: una prueba en bucle puede costar más que todo lo demás junto.
- ⚠Suscribir una función Lambda sin filtros a un tema con mucho tráfico: se paga cada invocación, útil o no.
- ⚠Un mensaje que falla y se reintenta muchas veces multiplica el número de entregas facturadas.
Descripción
SNS resuelve un problema de acoplamiento. Cuando ocurre algo importante — se registró una persona, se subió un archivo, terminó un proceso — suele haber varios sistemas interesados, y escribir en el código «avisa a este, luego a este otro» convierte cada sistema nuevo en un cambio de código.
Con SNS, quien produce el evento lo publica en un tema y se desentiende. Los interesados se suscriben al tema. Añadir un consumidor nuevo no toca ni una línea del productor. Es el patrón de publicación y suscripción, y es la base de las arquitecturas orientadas a eventos.
Cómo funciona
- Creas un tema y le das permisos de publicación a quien corresponda.
- Los destinos se suscriben: colas de SQS, funciones Lambda, correos, puntos HTTP, SMS.
- Un productor publica un mensaje una sola vez.
- SNS lo entrega en paralelo a todos los suscriptores, con reintentos si alguno falla.
- Los filtros de suscripción permiten que cada destino reciba solo lo que le interesa.
Manos a la obra
- Crea un tema y suscribe tu correo. Confirma la suscripción desde el mensaje que llega.
- Publica un mensaje desde la consola y compruébalo en la bandeja de entrada.
- Suscribe además una cola de SQS al mismo tema y observa que el mensaje llega a los dos destinos.
- Añade un filtro por atributo para que la cola reciba solo los mensajes marcados como urgentes.
- No hagas pruebas masivas por SMS: es el canal que puede quemar créditos en minutos.
Ejemplo visual
La combinación de SNS con SQS — publicar en un tema que entrega a varias colas — es tan común que tiene nombre propio: distribución en abanico, y aparece en casi todos los exámenes de certificación.
Cuándo NO es la mejor opción
- Amazon SQS — si el mensaje debe procesarlo un solo consumidor y esperar en cola hasta que pueda atenderlo.
- Amazon EventBridge — si el enrutamiento depende del contenido del evento y hay muchas reglas distintas.
- AWS End User Messaging — si el objetivo real es enviar SMS o notificaciones a personas a gran escala.
Se usa junto con
Aparece en certificaciones
- AWS Certified Cloud Practitioner
- AWS Certified Solutions Architect – Associate
- AWS Certified Developer – Associate
Para profundizar