← Volver al catálogo

AWS CloudFormation

En una frase: Crea y actualiza pilas de recursos a partir de plantillas declarativas YAML o JSON
Certificaciones: SAA-C03 SAP-C02 CLF-C02 DVA-C02

Qué es

AWS CloudFormation implementa infraestructura como código (IaC): en lugar de crear recursos a mano en la consola, los describes en una plantilla (YAML (YAML Ain't Markup Language: formato de configuración legible) o JSON (JavaScript Object Notation: formato de datos en texto)) y CloudFormation los crea en el orden correcto, gestionando las dependencias. El conjunto de recursos creados a partir de una plantilla es una pila (stack): se actualiza y se borra como una unidad. Así los entornos son repetibles, versionables en Git y revisables como cualquier otro código.

Conceptos clave

  • Secciones de una plantilla: Resources (la única obligatoria), Parameters (valores de entrada), Mappings (tablas de valores, por ejemplo AMI (Amazon Machine Image: plantilla con el sistema operativo para arrancar instancias) por región), Conditions, Outputs (valores de salida, exportables a otras pilas) y Transform (por ejemplo, SAM).
  • Funciones intrínsecas: !Ref, !GetAtt, !Sub, !ImportValue, !If…
  • Conjuntos de cambios (change sets): muestran qué se va a crear, modificar o reemplazar antes de aplicar una actualización.
  • Reversión automática: si falla la creación o la actualización, la pila vuelve al estado anterior.
  • Protección: DeletionPolicy (Retain o Snapshot) para conservar datos al borrar, protección de terminación de la pila y políticas de pila que impiden actualizar ciertos recursos.
  • Detección de desviaciones (drift): descubre recursos modificados a mano fuera de CloudFormation.
  • StackSets: despliegan la misma pila en muchas cuentas y regiones, por ejemplo en toda una organización.
  • Pilas anidadas para reutilizar componentes, y recursos personalizados (con Lambda) para lo que no esté soportado.
  • Herramientas encima: SAM (Serverless Application Model) simplifica aplicaciones sin servidores; el CDK genera plantillas desde lenguajes de programación.

Casos de uso típicos

  • Crear entornos idénticos de desarrollo, pruebas y producción.
  • Recuperación ante desastres: recrear la infraestructura en otra región.
  • Desplegar controles comunes en todas las cuentas de una organización con StackSets.
  • Canalizaciones de CI/CD (Continuous Integration / Continuous Delivery: integración y entrega continuas) que despliegan infraestructura revisada en Git.

Cuándo NO usarlo

  • Si prefieres definir la infraestructura con un lenguaje de programación: el CDK (que por debajo usa CloudFormation) o Terraform.
  • Para configurar el software dentro de los servidores: Systems Manager o herramientas de configuración.
  • Para desplegar solo una web sencilla sin gestionar la infraestructura: Elastic Beanstalk.

Modelo de precios

CloudFormation no tiene coste para los recursos de AWS: se pagan los recursos que crea. Solo se cobran las operaciones con extensiones de terceros (registro de CloudFormation) por encima del nivel gratuito.

Seguridad y alta disponibilidad

  • Rol de servicio de CloudFormation: las pilas se crean con sus permisos, no con los del usuario.
  • Nunca poner secretos en la plantilla: referencias dinámicas a Secrets Manager o Parameter Store.
  • Revisar los change sets y usar políticas de pila y DeletionPolicy en los recursos con datos.
  • Validación con reglas (CloudFormation Guard, Hooks) antes de desplegar.

Trampas de examen

  • "Infraestructura repetible como código": CloudFormation.
  • "Ver qué cambiará antes de actualizar": change set.
  • "Conservar la base de datos al borrar la pila": DeletionPolicy Retain o Snapshot.
  • "Misma pila en 50 cuentas y 3 regiones": StackSets.
  • "Alguien cambió un recurso a mano": detección de desviaciones.
  • "Compartir el ID de la VPC (Virtual Private Cloud) con otra pila": Outputs con Export e !ImportValue.
  • "Mismo modelo para cada región con distinta AMI": Mappings.
  • "Contraseña en la plantilla": referencia dinámica a Secrets Manager.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes