# AWS CloudFormation

> Describís tu infraestructura de AWS en un archivo de texto y AWS la construye tal cual.

- Nivel: Intermedio
- Temas: AWS, Cloud
- URL: https://tidbit.legios.com.ar/es/aws-cloudformation/
- En inglés: [AWS CloudFormation](https://tidbit.legios.com.ar/aws-cloudformation/)

**AWS CloudFormation** es el servicio de AWS para infraestructura como código. En vez de ir clickeando en la consola para crear una VPC, dos servidores, una base de datos y los permisos entre ellos, escribís una **plantilla** (un archivo YAML o JSON) que lista esos recursos y su configuración. Le entregás la plantilla a CloudFormation y crea todo, en el orden correcto, como un **stack**.

El valor aparece la segunda vez. ¿Necesitás el mismo ambiente para pruebas? Desplegás la misma plantilla con otro nombre. ¿Necesitás una base más grande? Editás el archivo, actualizás el stack, y CloudFormation calcula la diferencia y aplica solo eso. ¿El cambio salió mal? Vuelve al estado anterior. La plantilla vive en Git, así que cada cambio en la infraestructura tiene autor, revisión e historia.

Ejemplo: una plantilla de 150 líneas define una función AWS Lambda, su rol de IAM, un Amazon API Gateway adelante y una tabla de Amazon DynamoDB. Un comando (`aws cloudformation deploy`) crea las cuatro cosas en un par de minutos; borrar el stack borra las cuatro, sin que quede nada olvidado y facturando.

Las plantillas crudas se vuelven largas, así que muchos equipos las generan: el AWS CDK permite describir los mismos recursos en código TypeScript o Python que se compila a CloudFormation, y AWS SAM es una forma abreviada para apps serverless. Terraform es la alternativa popular que funciona en cualquier nube.

## Una analogía

El manual de instrucciones de un LEGO. Cualquiera con el manual arma el mismo modelo, y cuando querés un segundo no lo diseñás de nuevo, seguís el manual.

## Para quedarse

- Una plantilla (YAML o JSON) describe recursos; el stack es el resultado desplegado.
- Las actualizaciones son diferencias: CloudFormation cambia solo lo que cambió, y vuelve atrás si falla.
- Borrar un stack elimina todos los recursos que creó.
- CDK y SAM generan plantillas de CloudFormation desde código; Terraform es la alternativa multinube.

## Para seguir leyendo

- [¿Qué es AWS CloudFormation? (documentación oficial)](https://docs.aws.amazon.com/es_es/AWSCloudFormation/latest/UserGuide/Welcome.html)
- [Página de AWS CloudFormation](https://aws.amazon.com/es/cloudformation/)

## Términos relacionados

- [Infraestructura como código](https://tidbit.legios.com.ar/es/infrastructure-as-code/): Describir servidores, redes y bases de datos en archivos en vez de a clics.
- [Amazon VPC](https://tidbit.legios.com.ar/es/amazon-vpc/): Tu propio pedazo privado de la red de AWS, con paredes que dibujás vos.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [JSON](https://tidbit.legios.com.ar/es/json/): El formato de texto con el que los programas se pasan datos estructurados.
- [Git](https://tidbit.legios.com.ar/es/git/): Una máquina del tiempo para el código: cada cambio guardado, por quién y por qué.
- [AWS Lambda](https://tidbit.legios.com.ar/es/aws-lambda/): Correr un pedazo de código solo cuando pasa algo, sin ningún servidor que administrar.
- [IAM](https://tidbit.legios.com.ar/es/iam/): El reglamento que dice quién puede hacer qué en tu cuenta de AWS.
