POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Verificación de correos con AWS SES, Lambda y Terraform: de cero al envío

Verificación de correos con AWS SES, Lambda y Terraform: desde cero hasta el envío

Publicado el 19/08/2025

Quiero llevarte desde cero hasta el primer correo de verificación enviado por AWS usando Terraform para crear la infraestructura y AWS Lambda Node.js con AWS SDK v3 para enviar mensajes. La idea es provisionar todo como código, empaquetar una pequeña función de envío y probar en minutos.

Problema que resolvemos Casi toda aplicación necesita confirmar que un correo realmente pertenece al usuario. En lugar de acoplar el envío al backend principal vamos a aislar la responsabilidad en una Lambda ligera aplicando buenas prácticas de ingeniería como separación de capas y principios SOLID y DRY. Resultado bajo acoplamiento, escalado automático y gobernanza sencilla.

Qué vamos a montar Un Email Identity en Amazon SES para el remitente. Una IAM Role mínima para la Lambda. Una Lambda en Node.js 20 que usa AWS SDK v3 SESv2 para enviar correos. Opcionalmente una Function URL para llamar la Lambda por HTTP y testar con curl o Postman.

Observación importante sobre SES Las cuentas nuevas empiezan en sandbox. En sandbox solo se puede enviar a direcciones verificadas tanto remitente como destinatario y con límites bajos. Para enviar a cualquier dirección hay que solicitar salida del sandbox. Aquí mostraremos cómo validar identidades y cómo probar aun estando en sandbox.

Prerequisitos Cuenta AWS configurada con aws configure. Terraform 1.5. Node.js 20 y npm. Región compatible con SES ejemplo us-east-1.

Estructura de carpetas sugerida ses-verify slash app slash package json tsconfig json src slash config ts dto ts email slash SesEmailClient ts EmailService ts handler ts build generado por el script infra slash main tf variables tf outputs tf

Paso 1 Infra con Terraform crea los recursos SES Lambda IAM y Function URL mediante archivos variables tf main tf y outputs tf. Variables clave project_name aws_region sender_email lambda_package_path expose_function_url function_url_auth_type. El main tf debe definir provider aws recurso aws sesv2 email identity para el remitente rol IAM con politica basica de logs y politica que permita ses SendEmail recurso aws lambda function apuntando al paquete zip y opcional recurso aws lambda function_url cuando se quiera exponer para pruebas.

Paso 2 Lambda en Node.js diseño recomendado Separar responsabilidades en SesEmailClient que encapsula el cliente SESv2 EmailService que implementa el caso de uso enviar verificacion config para centralizar variables de entorno y handler que expone la función Lambda. Usar SendEmail del SESv2 con FromEmailAddress Destination Content Simple y codificar tanto HTML como texto plano.

Dependencias sugeridas en app package json @aws-sdk slash client-sesv2 y devDependencies typescript y tipos para aws lambda. Compilacion con tsc salida en dist y empaquetado en build slash lambda zip incluyendo dist node_modules y package json.

Ejemplo de variables de entorno SES_REGION y SENDER_EMAIL pasar desde Terraform como environment variables a la Lambda. En TypeScript centralizar en un modulo config que lea process env y proporcione region y sender.

Paso 3 Build y empaquetado dentro de app ejecutar npm ci luego npm run build y npm run package para generar build slash lambda zip que referenciará Terraform.

Paso 4 Deploy con Terraform en la raiz del proyecto ejecutar terraform -chdir=infra init y luego terraform -chdir=infra apply -var=aws_region=us-east-1 -var=sender_email=tu-remitente@ejemplo.com -var=lambda_package_path=../build/lambda.zip -var=expose_function_url=true. SES enviará un correo de verificación al remitente proporcionado y será necesario hacer clic en el enlace recibido para confirmar la identidad.

Nota sobre sandbox en SES el destinatario también debe estar verificado o usar el mailbox simulator. Para envío a cualquier dominio solicitar acceso a producción en SES y configurar buenas prácticas de reputación.

Paso 5 Pruebas Opcion A invocar directamente la Lambda con AWS CLI usando aws lambda invoke y un payload JSON subido desde un fichero para evitar inline JSON. Opcion B si activaste expose_function_url capturar la URL desde terraform output function_url y llamar con curl o desde Postman enviando un POST con body JSON que contenga to code subject y link.

Recomendaciones para producción Si usas Function URL considerar autorizacion AWS_IAM WAF y CDN. Verificar dominio y configurar DKIM y DMARC para mejorar entregabilidad. Usar templates de SES Configuration Sets IP pools y metricas para observabilidad y control de reputacion.

Buenas practicas de seguridad Minimizar permisos IAM otorgar solo ses SendEmail y logs basicos a la Lambda. Aplicar validacion del payload y limites de tasa desde la capa de invocacion. Para APIs públicas usar autenticacion y protecciones adicionales.

Proximos pasos y escalado Integrar con sistemas de plantilla y personalizacion para email transaccional. Monitorizar bounces y complaints. Automatizar solicitud de salida de sandbox y rotacion de claves si corresponde.

Sobre Q2BSTUDIO Q2BSTUDIO es una empresa de desarrollo de software a medida especializada en aplicaciones a medida y software a medida. Ofrecemos servicios cloud aws y azure, soluciones de inteligencia artificial e ia para empresas, agentes IA, servicios inteligencia de negocio y consultoria en power bi. Tambien contamos con equipos expertos en ciberseguridad para proteger tus sistemas y datos. Si buscas un partner para crear flujos de verificacion de correo integrados con tu aplicacion o desplegar infra como codigo con Terraform podemos ayudar desde el diseno hasta la puesta en produccion.

Palabras clave para posicionamiento 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

Resumen rapido sigue estos pasos preparar codigo TypeScript y handler compilar y empaquetar crear infra con Terraform validar el remitente en SES probar con Lambda invoke o Function URL y cuando estés listo salir del sandbox y verificar dominio con DKIM DMARC para buena entregabilidad. Con este enfoque obtienes un envio de verificacion desacoplado, seguro y escalable listo para integrarse en aplicaciones modernas.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio