AWS CDK Popular2019年〜
Un framework de IaC que permite definir infraestructura AWS usando lenguajes de programación como TypeScript o Python
Qué hace
AWS CDK (Cloud Development Kit) es un framework de IaC (Infrastructure as Code) que permite definir infraestructura AWS mediante código usando lenguajes de programación de propósito general como TypeScript, Python, Java, C# y Go. Puedes aprovechar al máximo las capacidades del lenguaje como condicionales, bucles y funciones para describir la infraestructura, y el código definido se convierte en plantillas de CloudFormation para su despliegue. Las abstracciones de alto nivel (Constructs) permiten construir infraestructura compleja con poco código.
Casos de uso
Se utiliza para definir infraestructura de aplicaciones serverless, construir entornos de arquitectura de microservicios, automatizar pipelines de CI/CD y gestionar infraestructura de múltiples entornos (desarrollo, staging, producción). Es especialmente adecuado para desarrolladores familiarizados con la programación que desean construir infraestructura sin escribir YAML/JSON.
Analogía cotidiana
Piensa en él como bloques de LEGO. Si CloudFormation es ensamblar pequeños bloques individuales (recursos individuales), CDK es combinar conjuntos de piezas prefabricadas (Constructs). Si eliges un "kit de casa" (configuración de aplicación web), las paredes, el techo y las puertas (VPC, ALB, ECS) vienen incluidos, y se completa en pocos pasos.
¿Qué es AWS CDK?
AWS CDK es un framework para definir infraestructura AWS con lenguajes de programación. Mientras que CloudFormation tradicional describe recursos en YAML o JSON, CDK permite escribirlos en lenguajes familiares como TypeScript o Python. Gracias al autocompletado del IDE y la verificación de tipos en tiempo de compilación, puedes detectar errores de configuración tempranamente, mejorando significativamente la eficiencia del desarrollo.
Cómo funcionan los Constructs
El núcleo de CDK son componentes reutilizables llamados Constructs. Los L1 Constructs corresponden uno a uno con los recursos de CloudFormation, y los L2 Constructs son abstracciones de alto nivel con mejores prácticas incorporadas. Por ejemplo, usando la clase Bucket de L2, puedes crear un bucket S3 con cifrado y versionado correctamente configurados en pocas líneas. Los L3 Constructs (Patterns) agrupan combinaciones de múltiples recursos en un solo componente.
Relación con CloudFormation
El código escrito en CDK se convierte (sintetiza) en plantillas de CloudFormation mediante el comando cdk synth. El despliegue se realiza a través de CloudFormation, por lo que puedes utilizar directamente funciones como la gestión de stacks, change sets y rollbacks de CloudFormation. CDK es una "capa superior" de CloudFormation; no lo reemplaza, sino que es una herramienta para hacerlo más fácil de usar. Desde los fundamentos hasta la aplicación avanzada de la relación con CloudFormation, puedes aprender sistemáticamente en libros técnicos en Amazon.
Cómo empezar
Instala el CLI de CDK con npm install -g aws-cdk y crea un nuevo proyecto con cdk init app --language typescript. Define los recursos en el archivo de stack del directorio lib/ y despliega con cdk deploy. La primera vez necesitas ejecutar el comando cdk bootstrap para crear el bucket S3 y los roles IAM necesarios para CDK. Puedes verificar los cambios previamente con cdk diff.
Aspectos a tener en cuenta
- CDK 自体は無料のオープンソースツールで、デプロイされた AWS リソースに対してのみ料金が発生する
- CDK のバージョンアップ時に破壊的変更が含まれる場合があるため、バージョンの固定と変更履歴の確認を推奨する
- cdk bootstrap は AWS アカウントとリージョンの組み合わせごとに 1 回実行が必要。チーム開発では最初に 1 人が実行すればよい