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

Guía de IaC para verificar remitentes con AWS SES y una Lambda en Node.js (SDK v3) usando Terraform. Incluye sandbox, pruebas y salida a producción.

19 ago 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

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.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.