AWS CDK
Framework de infraestructura como código de AWS que permite definir recursos cloud usando lenguajes de programación como TypeScript, Python o Java, generando CloudFormation.
seed#aws#cdk#iac#typescript#cloudformation#devops
¿Qué es?
AWS CDK (Cloud Development Kit) es un framework de infraestructura como código que permite definir recursos AWS usando lenguajes de programación reales en lugar de YAML/JSON. El código se sintetiza a CloudFormation para el despliegue.
CDK vs Terraform vs CloudFormation
| Aspecto | CDK | Terraform | CloudFormation |
|---|---|---|---|
| Lenguaje | TypeScript, Python, etc. | HCL | YAML/JSON |
| Abstracción | Constructs de alto nivel | Recursos | Recursos |
| Multi-cloud | No | Sí | No |
| Estado | CloudFormation | Terraform state | CloudFormation |
Conceptos clave
| Concepto | Función | Ejemplo |
|---|---|---|
| App | Punto de entrada, contiene stacks | new cdk.App() |
| Stack | Unidad de despliegue (= CloudFormation stack) | MyServiceStack |
| Construct L1 | Mapeo 1:1 con CloudFormation | CfnBucket (bajo nivel) |
| Construct L2 | Abstracciones con defaults sensatos | s3.Bucket (permisos, cifrado automáticos) |
| Construct L3 | Patrones completos | LambdaRestApi (API + Lambda + permisos) |
Ejemplo TypeScript
const fn = new lambda.Function(this, 'Handler', {
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda'),
});
const api = new apigateway.RestApi(this, 'Api');
api.root.addMethod('GET', new apigateway.LambdaIntegration(fn));¿Por qué importa?
CDK permite definir infraestructura con lenguajes de programación reales, lo que habilita abstracciones, testing unitario y reutilización de patrones que no son posibles con HCL o YAML. Para equipos de desarrollo que ya dominan TypeScript o Python, reduce la barrera de entrada a IaC.
Referencias
- CDK Documentation — Documentación oficial.
- CDK Patterns — Patrones de arquitectura.
- CDK Best Practices — AWS, 2024. Mejores prácticas oficiales.