AWS CloudFormation
Servicio de Infrastructure as Code que permite definir y gestionar infraestructura AWS como código mediante plantillas JSON o YAML, automatizando la creación, actualización y eliminación de recursos
Descripción general
AWS CloudFormation es un servicio de Infrastructure as Code (IaC) que automatiza el aprovisionamiento y gestión de recursos AWS mediante código. Se describen de forma declarativa los recursos AWS y sus configuraciones (VPC, EC2, RDS, Lambda, etc.) en archivos de plantilla en formato JSON o YAML, desplegándolos como stacks. CloudFormation analiza las dependencias entre recursos definidos en la plantilla y los crea en el orden correcto, realizando rollback automático en caso de fallo. Los change sets permiten previsualizar los cambios antes de aplicarlos, y la detección de drift identifica diferencias entre el estado real y la plantilla.
Secciones principales de la plantilla y funciones intrínsecas
Una plantilla de CloudFormation se compone de varias secciones: Parameters (valores de entrada), Mappings (tablas de búsqueda estáticas), Conditions (lógica condicional), Resources (definición de recursos, la única sección obligatoria) y Outputs (valores de salida). Las funciones intrínsecas como !Ref (referencia a parámetros y recursos), !Sub (sustitución de cadenas), !GetAtt (obtención de atributos de recursos), !If (evaluación condicional) y !Join (concatenación de cadenas) permiten construir plantillas dinámicas. La función !ImportValue permite referenciar Outputs de otros stacks, habilitando la composición entre stacks. Comparado con Azure Resource Manager (ARM), CloudFormation tiene una sintaxis más concisa en YAML y un ecosistema de herramientas más maduro, aunque ARM ofrece integración más estrecha con el portal de Azure.
Actualizaciones seguras con change sets y detección de drift
Los change sets son una función de seguridad crítica que permite previsualizar exactamente qué recursos se crearán, modificarán o eliminarán antes de aplicar cambios a un stack. Esto previene eliminaciones accidentales de recursos (especialmente bases de datos o buckets S3 con datos). La detección de drift compara el estado actual de los recursos con la definición en la plantilla, identificando cambios manuales realizados fuera de CloudFormation. Los recursos con drift detectado se pueden importar de vuelta a la plantilla o revertir al estado definido. Libros sobre CloudFormation (Amazon) permiten aprender patrones de IaC en profundidad.
Modularización con nested stacks y StackSets
A medida que la infraestructura crece, una sola plantilla se vuelve difícil de mantener. Los nested stacks permiten dividir la infraestructura en módulos reutilizables (red, seguridad, aplicación) referenciados desde un stack padre. StackSets extiende esto a entornos multi-cuenta y multi-región, permitiendo desplegar la misma plantilla en múltiples cuentas y regiones de AWS Organizations con una sola operación. Esto es esencial para aplicar configuraciones de seguridad base (GuardDuty, Config Rules, CloudTrail) de forma consistente en toda la organización. Las políticas de stack protegen recursos críticos contra eliminación o modificación accidental, y la función de rollback automático revierte el stack completo si algún recurso falla durante la creación o actualización.