# AWS CDK

> Describir tu infraestructura de AWS en un lenguaje de programación real, no en YAML.

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

**AWS CDK** (Cloud Development Kit) es una herramienta de infraestructura como código donde describís servidores, buckets, colas y permisos en TypeScript, Python, Java, C# o Go. Por debajo no le habla directo a AWS: **sintetiza** tu programa en una plantilla de AWS CloudFormation, y CloudFormation crea o actualiza los recursos. Los dos comandos clave son `cdk synth`, que genera la plantilla, y `cdk deploy`, que la aplica.

Escribir un programa de verdad trae lo que cualquier programador ya conoce: loops, funciones, autocompletado, chequeo de tipos, tests y paquetes para compartir código. Unas pocas líneas como `new s3.Bucket(this, 'Uploads', { versioned: true })` pueden expandirse en decenas de líneas de plantilla. Diez entornos parecidos pasan a ser un loop en vez de diez archivos copiados.

Las piezas se llaman **constructs** y vienen en niveles. Los de bajo nivel corresponden uno a uno con recursos de CloudFormation. Los de nivel más alto traen valores por defecto sensatos (un bucket cifrado y con el acceso público bloqueado salvo que digas lo contrario), y los más altos arman patrones enteros, como un servicio de contenedores con balanceador. Un ayudante que conviene conocer: `bucket.grantRead(fn)` te escribe la política de IAM, limitada justo a ese bucket. Cada cuenta y región necesita un `cdk bootstrap` una única vez antes del primer deploy.

## Una analogía

Construir con módulos prefabricados en vez de dibujar cada ladrillo. Decís "acá va una cocina" y el módulo llega con la plomería y la electricidad hechas; la municipalidad igual revisa el plano final, que en este caso es CloudFormation.

## Para quedarse

- Infraestructura en TypeScript, Python, Java, C# o Go.
- Sintetiza plantillas de CloudFormation; el deploy real lo hace CloudFormation.
- Los constructs empaquetan recursos con valores seguros por defecto y patrones reutilizables.
- Ayudantes como `grantRead` generan permisos de IAM con el mínimo privilegio.

## Para seguir leyendo

- [¿Qué es AWS CDK? (documentación oficial)](https://docs.aws.amazon.com/es_es/cdk/v2/guide/home.html)
- [AWS Cloud Development Kit](https://aws.amazon.com/es/cdk/)

## 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.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Python](https://tidbit.legios.com.ar/es/python/): Un lenguaje de programación muy usado, conocido por ser fácil de leer y de escribir.
- [AWS CloudFormation](https://tidbit.legios.com.ar/es/aws-cloudformation/): Describís tu infraestructura de AWS en un archivo de texto y AWS la construye tal cual.
- [Paquete](https://tidbit.legios.com.ar/es/packet/): El pedacito en que se corta cada dato de internet antes de viajar.
- [Cifrado](https://tidbit.legios.com.ar/es/encryption/): Mezclar datos para que solo quien tiene la clave pueda leerlos.
- [Contenedor](https://tidbit.legios.com.ar/es/container/): Una caja cerrada con un programa y todo lo que necesita para correr en cualquier lado.
- [IAM](https://tidbit.legios.com.ar/es/iam/): El reglamento que dice quién puede hacer qué en tu cuenta de AWS.
