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í .

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

Guía de Terraform CDK con Go para crear una API serverless completa (Parte 1)

Publicado el 02/09/2025

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

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