DEV Community

Deivy Hernandez
Deivy Hernandez

Posted on

Introducción a AWS CDK: Infraestructura como Código de forma Sencilla

El kit de desarrollo en la nube (CDK) es una herramienta de código abierto que permite a los desarrolladores definir y gestionar su infraestructura de nube mediante código. El enfoque de la infraestructura como código permite un despliegue más rápido, reduce los errores humanos y permite el control de versiones. CDK es compatible con varios lenguajes de programación y fomenta coherencia mediante la creación de componentes reutilizables, en caso de ser necesario.

Mencionemos algunas ventajas

El kit de desarrollo de la nube (CDK) es una herramienta importante de la nube de AWS por varias razones:

  1. Infraestructura como código: Permite a los desarrolladores definir y aprovisionar su infraestructura de nube utilizando código, lo que acelera el proceso de despliegue y reduce la probabilidad de error humano.
  2. Lenguajes de programación: Es compatible con lenguajes de programación como JavaScript, TypeScript, Python, Java y C#. Esto lo hace accesible a una amplia gama de desarrolladores.
  3. Código abierto: Fomenta la contribución y colaboración de la comunidad, lo que conduce a la mejora continua e innovación.
  4. Control de versiones: Como cualquier otro código de software, el código de la infraestructura puede versionarse, revisarse y compartirse. Esto fomenta la colaboración entre equipos y garantiza que los cambios se rastreen y gestionen de forma eficaz.
  5. Componentes reutilizables: la creación de componentes reutilizables en CDK permite que sean compartidos a través de diferentes proyectos y mejora la coherencia entre los mismos.

Ejemplo del flujo al crear recursos con CDK

basic-diagram-cdk

¿Cómo podemos instalar CDK?

Es necesario tener una version de node (recomiendo hacer uso de nvm para manejar versiones de node). Para instalar la librería debes ejecutar el siguiente comando:

npm i -g aws-cdk
Enter fullscreen mode Exit fullscreen mode

Luego iniciaremos un proyecto con lo siguiente:

mkdir my-cdk-project
cd my-cdk-project
cdk init sample-app --language=typescript
Enter fullscreen mode Exit fullscreen mode

Esto creará un proyecto con la siguiente estructura usando typescript:

cdk-structure

Al abrir el archivo lib/cdk-examples-stack.ts podrás ver la siguiente clase creada:

import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as subs from 'aws-cdk-lib/aws-sns-subscriptions';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import { Construct } from 'constructs';

export class CdkExamplesStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const queue = new sqs.Queue(this, 'CdkExamplesQueue', {
      visibilityTimeout: Duration.seconds(300)
    });

    const topic = new sns.Topic(this, 'CdkExamplesTopic');

    topic.addSubscription(new subs.SqsSubscription(queue));
  }
}
Enter fullscreen mode Exit fullscreen mode


Se puede observar que la clase está creando dos recursos, un SQS y un SNS, donde a este último se agrega como suscripción al SQS.

Ahora necesitamos saber dónde se realiza la instancia de la clase anterior, para esto, debemos dirigirnos al archivo bin/cdk-examples.ts y podrás observar lo siguiente:

#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib';
import { CdkExamplesStack } from '../lib/cdk-examples-stack';

const app = new cdk.App();
new CdkExamplesStack(app, 'CdkExamplesStack');

Enter fullscreen mode Exit fullscreen mode

Para realizar un despliegue es necesario que tengas configurado en tu computador un perfil de AWS, puedes ver más información acá.

Los comandos que frecuentemente usarás son:

cdk deploy #Despliega tus stack en la cuenta del perfil de AWS
cdk synth  #Sintetiza una plantilla de AWS CloudFormation para su aplicación
cdk diff #Compara tu aplicación con la pila desplegada
Enter fullscreen mode Exit fullscreen mode

Error común

  • En caso de haber ejecutado el comando cdk deploy es muy probable que te hayas encontrado con un error, esto se debe a que es necesario enlazar el entorno de la aplicación a nuestra cuenta de AWS ejecutando el comando cdk bootstrap , en una nueva publicación estaremos complementando esta información.

Enlaces de referencia

Top comments (0)