Como configurar y usar AWS CDK como herramienta de IaC para tus aplicaciones

JugueDev
5 min readFeb 26, 2024

--

… con Typescript.

En este post vamos a explicar los pasos necesarios para instalar y configurar un entorno de CDK para tus proyectos con IaC en AWS.

INSTALAR CDK EN TU MAQUINA LOCAL

Primero vamos a instalar CDK en tu entorno de desarrollo local, ya sea una laptop, computadora o hasta un ambiente de Cloud 9.

Para ello lo primero que se debe instalar y verificar es la CLI de AWS. Desde la página oficial de la documentación de AWS podemos encontrar el paso a paso de esta instalación en cualquier sistema operativo.

Una vez instalado validamos que efectivamente se ha añadido al PATH de nuestro sistema ejecutando el comando aws — version:

Luego tenemos que instalar nodejs, de preferencia la última versión estable desde su página web, en caso de ya tenerlo instalado omitir este paso.

Adicionalmente es necesario instalar otras dependencias dependiendo del lenguaje con el que se desee trabajar, en nuestro caso, al trabajar con typescript es necesario que adicionalmente a nodejs, instalemos typescript:

npm -g install typescript

Instalamos luego la CLI de AWS CDK mediante:

npm install -g aws-cdk

Y validamos que fue instalado adecuadamente con:

cdk --version

Con esto ya hemos logrado instalar AWS CDK en nuestro ambiente local.

CONFIGURAR CREDENCIALES

Si bien ya hemos logrado instalar CDK en nuestro propio ambiente de desarrollo, aún nos falta un paso muy importante, y es el de configurar las credenciales en nuestro sistema de modo que la IaC que definamos pueda desplegarse en una cuenta de AWS. Para esto, es necesario que la CLI de AWS cuente con algún set de credenciales válido que pueda estar compuesto por un Access Key, un Secret Access Key y en algunos casos un Session Key.

Con estos valores configurados ya podremos desplegar nuestro proyecto CDK en nuestra cuenta de AWS.

CDK BOOTSTRAP

Para que CDK pueda desplegar recursos en tu cuenta de AWS, adicionalmente a configurar las credenciales es necesario que CDK cree algunos recursos en AWS para poder almacenar los artefactos y obtener los permisos de creación de recursos. Con ese objetivo también es importante que en cada cuenta nueva en la que se requiera utilizar un proyecto en CDK se ejecute el comando:

cdk bootstrap

FLUJO DE TRABAJO CON CDK

Una vez que hemos configurado nuestro ambiente con CDK, ya podemos crear proyectos. A continuación ejecutaremos un flujo de desarrollo básico.

Primero tenemos que inicializar un proyecto, creamos una carpeta vacía y dentro ejecutamos los siguientes comandos:

# create a typescript cdk project (sample-app is a predefined template)
cdk init sample-app --language typescript

Al ejecutar este comando se nos generará el siguiente set de archivos. Dado que este tutorial solo esta enfocado en la instalación y configuración de CDK, no vamos a entrar al detalle del funcionamiento de cada archivo, solo nos vamos a enfocar en aquellos archivos que se encuentren en la carpeta lib.

Dentro del archivo autogenerado dentro de la carpeta lib encontraremos el código IaC para la creación de un set básico de recursos, una cola SQS, un tópico SNS y una suscripción:

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 CdkcodeStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);

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

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

topic.addSubscription(new subs.SqsSubscription(queue));
}
}

Una vez configuradas nuestras credenciales ejecutamos los siguientes comandos para poder desplegar los recursos definidos:

# Primero sintetizamos el stack en un template de Cloudformation
cdk synth

# Muestra los cambios en nuestra aplicación de CDK y que acciones ejecutara (destroy, create)
cdk diff

# Desplegamos stack (es necesario configurar credenciales con aws configure)
cdk deploy

De este modo habremos hecho nuestro primer despliegue con CDK en AWS 💪💪.

Para eliminar los recursos desplegados, solo hace falta ejecutar el siguiente comando:

# Eliminar recursos
cdk destroy

Material Adicional

  1. Para poder profundizar en conceptos de AWS CDK, podemos usar el siguiente material:

--

--

JugueDev

Solutions Architect | AWS x5 | Databricks x2 | Azure x1 | IoT | Machine Learning | Electronic Enginee