AWS:Crear un entorno de Cloud9 con CDK
Tags: aws, cdk, cloud9
Published: 2023-10-27 11:18:15

---
title: AWS:Crear un entorno de Cloud9 con CDK
published: true
date: 2023-10-27 11:10:03 UTC
tags: aws,cdk,cloud9
canonical_url: https://olcortesb.hashnode.dev/awscrear-un-entorno-de-cloud9-con-cdk
---

[Cloud9](https://aws.amazon.com/es/pm/cloud9/) es un servicio de AWS que permite tener un _ambiente de desarrollo integrado_ (IDE) en el _cloud_ de AWS. Se lanzó en noviembre de 2017 ([Link](https://youtu.be/fwFoU_Wb-fU)), y esta en línea con la corriente de _IDEs_ basados en _cloud_ que estamos viendo en el mercado ([https://idx.dev/](https://idx.dev/), [https://www.gitpod.io/](https://www.gitpod.io/), [https://github.com/features/codespaces](https://github.com/features/codespaces))

La intención de este artículo es mostrar como levantar y borrar un ambiente de _Cloud9_ utilizando CDK, esto permitir la agilidad y automatización de levantar un ambiente cuando lo necesitemos y tener el control del ciclo de vida de ese recurso.

### Instalar CDK

Siguiendo los tutoriales de instalación de la herramienta: [Link](https://docs.aws.amazon.com/es_es/cdk/v2/guide/getting_started.html)

```bash
# Install
npm install -g aws-cdk
# CDK version
cdk --version
# CDK Bootsraping
cdk bootstrap aws://ACCOUNT-NUMBER/REGION

```

### Descargar el repositorio y configurar

En el siguiente repositorio de Github -> [link](https://github.com/olcortesb/cdk-cloud9) está el código en CDK, a continuación contar como configurarlo para levantar nuestro ambiente de _Cloud9_.

```js
//https://github.com/olcortesb/cdk-cloud9/blob/main/lib/cdk-cloud9-stack.ts
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as cloud9 from 'aws-cdk-lib/aws-cloud9';

export class CdkCloud9Stack extends cdk.Stack {
  constructor(scope: cdk.App , id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Create a VPC for the Cloud9 environment
    const vpc = new ec2.Vpc(this, 'Cloud9Vpc', {
      maxAzs: 3, // Adjust as needed
    });

    // Create the Cloud9 environment
    new cloud9.CfnEnvironmentEC2(this, 'MyCloud9Environment', {
      instanceType: this.node.getContext('instance_type'), // Adjust as needed
      connectionType: 'CONNECT_SSM',
      name: this.node.getContext("name"),
      ownerArn: this.node.getContext("user_arn"),
      subnetId: vpc.publicSubnets[0].subnetId,
    });
  }
}

```

Este es el código para crear nuestro ambiente de _Cloud9_ , lo importante y lo que tenemos que modificar son las tres variables de entorno `name`, `instance_type`, `user_arn`. Estos tres valores, como indican los nombres, nos permitían configurar las propiedades del ambiente. Estos valores los encontraremos en el archivo cdk.json

```
// https://github.com/olcortesb/cdk-cloud9/blob/main/cdk.json
    ...
    "name": "Cloud9Env",
    "user_arn": "arn:aws:iam::ACCOUNT-NUMBER:NAME",
    "instance_type": "t2.micro"
  }
}

```

`name`: Nombre del Ambiente de _Cloud9_

`instance_type`: Tipo de instancia EC2 donde se ejecutara nuestro entorno de _Cloud9_

`user_arn`: La persona dentro de la organización que va a poder acceder a este _Cloud9_, para obtener este nombre para nuestro usuario, si trabajamos en nuestra cuenta se puede ejecutar el siguiente comando

```bash
aws sts get-caller-identity --query 'Arn' --output text

```

Este comando retornar una salida similar a esta:

```bash
"arn:aws:iam::ACCOUNT-NUMBER:NAME"

```

Que tenemos que remplazar en `user_arn` y luego de configurar las variables levantamos el ambiente.

### Deploy / Destroy el entorno de Cloud9

Con todo configurado a continuación procedemos a hacer `deploy`

```bash
cdk deploy --profile olcortesb

```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698397926234/bbf987a8-9119-4713-bf9a-79c5a5857cd0.png)

Ahora vamos a la consola de AWS y podemos ver nuestro _Cloud9_ listo para usar:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698397984716/819bfcfa-cdca-478e-a999-f631078a3d1d.png)

Y para destruir el ambiente hacemos `destroy` desde el mismo repositorio

```bash
cdk destroy CdkCloud9Stack

```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698400834498/9dc798ae-ea2d-467a-af2d-456e62866e43.png)

Con esto nos aseguramos de no dejar encendido ninguno de los servicios asociados al _Cloud9_, recuerda que si no persistimos el volumen perdemos la información al destruir el ambiente.

¡Gracias por leer, quedo a cualquier comentario, Saludos!

Oscar Cortes

### Referencias:

- [https://aws.amazon.com/es/pm/cloud9](https://aws.amazon.com/es/pm/cloud9)

- [https://github.com/olcortesb/cdk-cloud9/blob/main/cdk.json](https://github.com/olcortesb/cdk-cloud9/blob/main/cdk.json)

- [https://docs.aws.amazon.com/es\_es/cdk/v2/guide/getting\_started.html](https://docs.aws.amazon.com/es_es/cdk/v2/guide/getting_started.html)

- [https://youtu.be/fwFoU\_Wb-fU](https://youtu.be/fwFoU_Wb-fU)