SES AWS – Email Pipeline Serverless
Este proyecto es un pipeline serverless que permite recibir correos electrónicos utilizando Amazon SES, almacenarlos en S3, procesarlos con una función Lambda y generar notificaciones automáticas.
Arquitectura
Herramientas utilizadas
- Amazon Web Services (AWS)
- Amazon SES (Simple Email Service)
- Amazon S3 (Simple Storage Service)
- λ AWS Lambda
- Amazon DynamoDB
- Amazon SNS (Simple Notification Service)
Autor: Esteban Martins
Code:
github.com/hokuto06
Mail:
info@estebanmartins.com.ar
Trigger – Recepción del correo
Cuando Amazon SES recibe un correo dirigido a info@estebanmartins.com.ar
, se activa una
Regla de Recepción (Receipt Rule).
Esta regla ejecuta una acción de tipo S3, que almacena el correo en formato raw MIME (formato técnico del mensaje con encabezados y cuerpo completo) en un bucket S3.
Este bucket tiene configurado un evento que dispara automáticamente una función Lambda llamada
email_parser
cada vez que se sube un nuevo objeto.
Lambda – Procesamiento del correo
La función Lambda email_parser
recibe el evento con información del nuevo archivo en S3:
el nombre del bucket y el object.key
.
- Recupera el contenido del correo con
get_object
de S3 - Parsea el mensaje usando la librería
email
de Python - Extrae datos útiles como From, Subject, Date y To
- Guarda esos datos estructurados en una tabla de Amazon DynamoDB llamada
email_received
Notificación – SNS Topic
Luego de almacenar los datos en DynamoDB, la Lambda publica un mensaje en un topic de Amazon SNS
llamado alerta-email-recibido
.
Este topic envía una notificación automática por email (o cualquier otro protocolo) al administrador del sistema (yo 😉).
Resumen del Pipeline
El pipeline completo funciona de la siguiente manera:
SES → S3 → Lambda → DynamoDB + SNS
- El correo llega a SES y se almacena en S3
- La función Lambda se activa al detectar un nuevo archivo
- Lambda procesa el correo, extrae datos y los guarda en DynamoDB
- Se envía una notificación por SNS al administrador de la cuenta de correo.
Todo esto ocurre de forma automática y sin necesidad de mantener servidores, aprovechando al máximo la arquitectura serverless de AWS.