Terraform CDK con Go: Construyendo una API Serverless Completa (Parte 1)

Guía práctica paso a paso para construir una API serverless en AWS con Terraform CDKTF y Go, integrando Lambda, API Gateway, DynamoDB y S3, con estructura modular y despliegue completo.

2 sept 2025 • 6 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Infraestructura como código en acción

Si ya trabajas con Terraform y te gustaría sumar el poder de un lenguaje como Go, este tutorial te va a encantar. Te guío paso a paso para construir una API Serverless completa en AWS con Lambda, API Gateway, DynamoDB y S3 utilizando Terraform CDK CDKTF con Go.

Guía práctica archivo por archivo para crear una API de pedidos Orders API en AWS con Terraform CDK CDKTF y Go. Montaremos todas las carpetas y ficheros bajo terraform, entenderás qué hace cada pieza y desplegaremos el proyecto. En la Parte 2 añadiremos CI CD con GitHub Actions tanto para la API como para el código CDKTF siguiendo un enfoque GitOps.

Por qué CDKTF CDK for Terraform resulta tan potente

Define la infraestructura con tipos en Go y gana autocompletado, refactors y seguridad de tipos. Reutiliza módulos y constructs en lugar de mantener enormes ficheros tf. Todo sigue siendo Terraform bajo el capó plan apply, backends de estado, providers. Escala cómodamente a proyectos multi stack.

Qué vamos a construir

Una Orders API pequeña con AWS Lambda en Go, expuesta mediante API Gateway HTTP API, con datos en DynamoDB y un bucket S3 para alojar el artefacto de la Lambda api.zip. La aplicación podría exponer endpoints como orders, orders ordenId, orders ordenId items, etc. Aquí nos centraremos en la infraestructura.

Requisitos previos

Go 1.21 o 1.22. Node.js y npm para el CLI de CDKTF. Terraform CLI 1.5. AWS CLI configurada por perfil o variables de entorno. Instala CDKTF con npm i -g cdktf-cli y valida con cdktf --version.

Contexto del repositorio

Proyecto base go-serverless-api-terraform que contiene el código de la API en Go. Crearemos todos los ficheros de infraestructura bajo la carpeta terraform siguiendo la rama terraform-cdk-go. Clona el repositorio, entra en la carpeta y prepara el directorio terraform.

Estructura final de carpetas que crearás

Configurarás el proyecto con un fichero cdktf.json, el módulo go.mod, un .env de ejemplo, un main.go como punto de entrada que lee variables y sintetiza la infraestructura, un paquete infra para cablear provider, módulos y outputs, y un conjunto de módulos para DynamoDB, S3, IAM, Lambda y API Gateway.

Paso 1 Configuración del proyecto con cdktf.json

Define el lenguaje Go, el comando app go run main.go, el provider hashicorp aws con versión mayor o igual a 6 y una región por defecto como us-east-1. Podrás sobreescribir la región con la variable de entorno AWS_REGION.

Paso 2 Dependencias con go.mod

Crea el módulo terraform en Go 1.22 e incluye las dependencias de constructs v10, provider aws para CDKTF y el runtime de CDKTF. Ejecuta go mod tidy para descargar las librerías.

Paso 3 Variables de entorno con .env

Prepara un .env con AWS_REGION, AWS_PROFILE y ENV. Declara además los nombres de tablas de DynamoDB, la configuración del bucket S3 de artefactos prefijo, versioning, force destroy y cifrado NONE, AES256 o KMS además de un posible KMS key id. Añade los parámetros de la Lambda nombre, runtime provided.al2023, handler bootstrap, memoria, timeout y la clave de S3 donde subiremos api.zip.

Paso 4 Punto de entrada main.go

Lee variables de entorno con valores por defecto, instancia la app de CDKTF, crea la pila con una función NewStack que recibirá tu Config y ejecuta la síntesis. Al finalizar tendrás la carpeta cdktf.out con los ficheros de Terraform JSON listos para init y apply.

Paso 5 Cableado de la infraestructura en infra

En infra define la estructura Config, inicializa el provider de AWS con región y perfil, crea el bucket de S3 de artefactos con bloqueo de acceso público, versionado opcional y cifrado opcional. Crea las tablas de DynamoDB con modo on demand y recuperación point in time. Genera el rol de ejecución de Lambda con la política básica de logs. Declara la función Lambda desde un objeto de S3 y pasa variables de entorno como ENV, TABLE_ORDERS y TABLE_ORDER_ITEMS. Crea la API HTTP de API Gateway con integración proxy hacia la Lambda, define rutas mínimas como ANY orders y ANY orders orderId items, la stage con nombre ENV y el permiso para que API Gateway invoque la función. Expón salidas como api_url y artifact_bucket.

Paso 6 Módulos

Divide la infraestructura en módulos reutilizables dynamodb para tablas de pedidos e items con PITR activado, s3 para el bucket de artefactos con PAB, versionado y cifrado, iam para el rol de ejecución de Lambda con políticas mínimas, lambda para crear la función desde S3 y apigateway para el API HTTP, integración, rutas, stage y permiso de invocación.

Paso 7 Construcción y subida del artefacto api.zip

Desde la raíz del repo compila la binaria para Linux con GOOS linux y GOARCH amd64 y comprímela como bootstrap dentro de api.zip. Cuando el bucket exista, sube el artefacto con AWS CLI a s3 usando el patrón prefijo mas entorno por ejemplo go-lambda-artifacts-dev api.zip.

Paso 8 Sintetizar y aplicar con Terraform

Desde la carpeta terraform, ejecuta el comando go run main.go para sintetizar, entra en cdktf.out stacks infra y haz terraform init. Aplica primero el bucket de artefactos con un target para poder subir api.zip. Sube el artefacto y finalmente aplica el resto con terraform apply. Obtén la URL de la API desde los outputs o desde API Gateway en la consola de AWS en la stage del entorno.

Limpieza

Ejecuta terraform destroy cuando termines. Si el bucket contiene objetos, activa S3_FORCE_DESTROY en true y vuelve a aplicar para permitir el borrado completo.

Notas y consideraciones

Runtime de la Lambda provided.al2023 y handler bootstrap para un runtime de Go personalizado. Mantén políticas IAM con privilegio mínimo e itera según lo requiera tu handler. Los nombres de buckets S3 son globales, usa el patrón prefijo guion entorno para evitar colisiones. Para equipos, valora usar backend S3 y bloqueo con DynamoDB para el estado.

Ejemplo de backend

Cuando estés listo, configura un backend S3 con bucket para estado, clave ruta de estado, región y tabla de locks de DynamoDB directamente dentro de la pila antes de los recursos.

Enlace al proyecto completo

El código listo para ejecutar con la misma estructura descrita está disponible en la rama terraform-cdk-go del repositorio público. Puedes revisarlo en el repositorio de GitHub.

Qué vendrá en la Parte 2

Configuraremos pipelines de GitHub Actions para compilar, testear y publicar el artefacto de la API en Go, y para sintetizar y desplegar cambios de CDKTF. Además aplicaremos GitOps con planes como checks en PR, entornos y aprobaciones.

Cómo te ayuda Q2BSTUDIO

En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida con foco en software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si quieres llevar a producción una arquitectura serverless robusta con AWS, Terraform y Go o modernizar tus cargas en la nube, nuestro equipo puede acompañarte desde el diseño hasta la automatización del despliegue con CI CD y GitOps. Descubre nuestros servicios cloud en AWS y Azure y acelera la entrega de tus iniciativas.

Más allá de la nube, integramos IA en procesos críticos, construimos asistentes y agentes IA para automatizar tareas y mejoramos la toma de decisiones con analítica avanzada. Si necesitas evolucionar tus aplicaciones a medida o reforzar tu estrategia de ciberseguridad, podemos ayudarte con auditorías, pentesting, observabilidad y prácticas de ingeniería de plataforma.

Palabras clave recomendadas para tu estrategia

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

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat