SNS
📘 ¿Qué es SNS?
AWS Simple Notification Service (SNS) es un servicio de mensajería pub/sub (publicador/suscriptor) completamente administrado, que permite enviar mensajes a múltiples destinatarios (subscribers) de forma rápida y fiable.
Ideal para notificaciones en tiempo real, event-driven architectures y integración entre microservicios.
🧩 Modelo de funcionamiento
[Publisher] → [Topic SNS] → [N suscriptores]
✔️ Publicador:
- Envía un mensaje al topic.
📨 Suscriptores:
- Reciben el mensaje automáticamente, si están suscritos al topic.
🔄 Flujo general
-
Crear un Topic SNS
-
Suscribir destinos (subscribers)
-
Publicar mensajes en el topic
-
SNS entrega el mensaje a todos los suscriptores
📦 Tipos de Topics
| Tipo | Uso principal |
|---|---|
| Standard | Alta disponibilidad y baja latencia |
| FIFO | Orden estricto y sin duplicados |
🔹 FIFO solo funciona con endpoints que aceptan uno a uno (no SMS o email).
🎯 Tipos de suscriptores soportados
| Destino | Descripción |
|---|---|
| Amazon SQS | Ideal para colas y procesamiento asíncrono |
| AWS Lambda | Ejecuta funciones automáticamente al recibir evento |
| HTTP/S Endpoint | Webhooks personalizados |
| Email / Email-JSON | Envía correos a destinatarios |
| SMS (texto) | Envía notificaciones por mensaje de texto |
| Mobile Push (FCM, APNs) | A través de SNS Platform Applications |
🛠️ Componentes clave
| Componente | Descripción |
|---|---|
| Topic | Canal lógico donde se publican mensajes |
| Publisher | Componente que publica mensajes en el topic |
| Subscriber | Destino que recibe el mensaje |
| Message | Cuerpo del mensaje que será entregado (texto, JSON, etc.) |
| Filter Policies | Opcional. Permite entregar mensajes solo si cumplen ciertos criterios |
🔐 Seguridad
-
Controlada vía IAM policies:
-
sns:Publish -
sns:Subscribe -
sns:CreateTopic
-
-
Puedes definir políticas para controlar quién puede publicar/suscribirse.
-
Soporta encriptación en reposo con AWS KMS.
📊 Casos de uso
-
Notificaciones por email/SMS para alertas CloudWatch
-
Integración entre microservicios desacoplados
-
Disparo de Lambdas desde eventos externos
-
Comunicación entre aplicaciones y usuarios móviles
🧪 Ejemplo de filtro de suscripción
{
"eventType": ["order_placed", "order_shipped"]
}
Solo se entregarán mensajes que contengan
"eventType": "order_placed"o"order_shipped"
💰 Precios
| Uso | Costo aproximado |
|---|---|
| Primer millón de publicaciones/mes | ✅ Gratis |
| Publicación adicional | 💲 $0.50 por millón |
| SMS | 💲 Según país y volumen |
| ✅ Gratis (límite razonable) | |
| KMS (opcional) | 💲 Costos por uso de claves si se habilita |
🧠 Preguntas tipo certificación
-
¿Cuál es el patrón de arquitectura que sigue SNS?
- ✅ Publicador/Suscriptor (Pub/Sub)
-
¿Qué servicio de AWS permite enviar mensajes por SMS o email?
- ✅ SNS
-
¿SNS puede invocar funciones Lambda?
- ✅ Sí
-
¿Qué tipo de SNS Topic garantiza orden y sin duplicados?
- ✅ FIFO Topic
-
¿Puedes filtrar qué suscriptores reciben qué mensajes?
- ✅ Sí, con Filter Policies
🎯 Buenas prácticas
-
Usa SQS como buffer para sistemas que no toleran picos de carga.
-
Usa Filter Policies para evitar enviar mensajes irrelevantes.
-
Usa nombres descriptivos para los topics.
-
Habilita CloudWatch Logs para seguimiento de entregas.
-
Si envías mensajes críticos, combina SNS + SQS con DLQ (Dead Letter Queue).