Tutorial de AWS CDK para AWS Cloud9 - AWS Cloud9

AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes actuales de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información»

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial de AWS CDK para AWS Cloud9

En este tutorial se indica cómo trabajar con el AWS Cloud Development Kit (AWS CDK) en un entorno de desarrollo de AWS Cloud9. El AWS CDK es un conjunto de herramientas de software y bibliotecas que los desarrolladores pueden utilizar para crear modelos de componentes de la infraestructura de AWS como código.

El AWS CDK incluye AWS Construct Library, que puede utilizar para resolver rápidamente muchas tareas en AWS. Por ejemplo, puede utilizar la construcción Fleet para implementar código de forma completa y segura en una flota de hosts. Puede crear sus propias construcciones para crear modelos de diversos elementos de sus arquitecturas, compartirlos con otras personas o publicarlos en la comunidad. Para obtener más información, consulte la Guía del desarrollador del kit de desarrollo de la nube de AWS.

El uso de este tutorial y la creación de esta muestra pueden generar cargos en su cuenta de AWS. Entre estos se incluyen posibles cargos por servicios como Amazon EC2, Amazon SNS y Amazon SQS. Para obtener más información, consulte Precios de Amazon EC2, Precios de Amazon SNS y Precios de Amazon SQS.

Requisitos previos

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:

  • Debe tener un entorno de desarrollo de AWS Cloud9 EC2. En este ejemplo, se da por hecho que ya tiene un entorno de EC2 que está conectado a una instancia de Amazon EC2 que ejecuta Amazon Linux o Ubuntu Server. Si tiene otro tipo de entorno o sistema operativo, es posible que tenga que adaptar las instrucciones de este ejemplo para configurar herramientas relacionadas. Para obtener más información, consulte Crear un entorno en AWS Cloud9.

  • Ya tiene abierto el IDE de AWS Cloud9 para el entorno existente. Al abrir un entorno, AWS Cloud9 abre el IDE de ese entorno en el navegador web. Para obtener más información, consulte Apertura de un entorno en AWS Cloud9.

Paso 1: Instalar las herramientas necesarias

En este paso, instale en su entorno todas las herramientas que AWS CDK necesite para ejecutar una muestra escrita en el lenguaje de programación TypeScript.

  1. Node Version Manager o nvm, que se utiliza para instalar Node.js más adelante.

  2. Node.js, que es necesario para la muestra y contiene el administrador de paquetes de nodo o npm, que se utiliza para instalar TypeScript y el AWS CDK más adelante.

  3. TypeScript, que lo requiere esta muestra. (El AWS CDK también ofrece compatibilidad con otros lenguajes de programación).

  4. AWS CDK.

Paso 1.1: Instalar Node Version Manager (nvm)

  1. En una sesión del terminal en el IDE de AWS Cloud9, asegúrese de que las últimas actualizaciones de seguridad y correcciones de errores están instaladas. Para ello, ejecute el comando yum update (para Amazon Linux) o apt update (para Ubuntu Server). (Para iniciar una nueva sesión del terminal, en la barra de menús, seleccione Window [Ventana], New Terminal [Nuevo terminal]).

    Para Amazon Linux:

    sudo yum -y update

    Para Ubuntu Server:

    sudo apt update
  2. Confirme si nvm ya está instalado. Para ello, ejecute el comando nvm con la opción --version.

    nvm --version

    Si se ejecuta correctamente, el resultado contiene el número de versión de nvm , en cuyo caso puede ir directamente a Paso 1.2: Instalar Node.js.

  3. Descargue e instale nvm. Para ello, ejecute el script de instalación. En este ejemplo, la versión instalada es la 0.33.0, pero puede consultar la última versión de nvm aquí.

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
  4. Comience a utilizar nvm. Puede cerrar la sesión del terminal e iniciarla de nuevo, o bien cargar el archivo ~/.bashrc que contiene los comandos para cargar nvm.

    . ~/.bashrc

Paso 1.2: Instalar Node.js

  1. Confirme si ya tiene instalado Node.js. Si es así, asegúrese de que la versión instalada es 16.17.0 o superior. Este ejemplo se ha probado con Node.js 16.17.0. Para verificarlo, con la sesión del terminal aún abierta en el IDE, ejecute el comando node con la opción --version .

    node --version

    Si ha instalado Node.js, la salida contendrá el número de versión. Si el número de versión es 16.17.0, vaya directamente a Paso 1.3: Instalar TypeScript.

  2. Instale Node.js 16 ejecutando el comando nvm con la acción install .

    nota

    También puede ejecutar nvm install node para instalar la versión de soporte a largo plazo (LTS) de Node.js. AWS Cloud9 es compatible con la versión LTS de Node.js.

    nvm install v16
  3. Comience a utilizar Node.js 16. Para ello, ejecute el comando nvm junto con la acción alias, el número de versión para el alias y la versión que se va a utilizar para dicho alias, tal y como se indica a continuación.

    nvm alias default 16
    nota

    El comando anterior establece Node.js 16 como la versión predeterminada de Node.js. Si lo desea, también puede ejecutar el comando nvm junto con la acción use, en lugar de la acción alias (por ejemplo, nvm use 16.17.0). Sin embargo, la acción use provoca que esa versión de Node.js solo se active mientras que la sesión del terminal actual se está ejecutando.

  4. Para confirmar que está utilizando 16 Node.js, vuelva a ejecutar el comando node --version . Si la versión instalada es la correcta, la salida incluirá la versión v16.

Paso 1.3: Instalar TypeScript

  1. Confirme si ya ha instalado TypeScript. Para ello, con la sesión del terminal aún abierta en el IDE, ejecute el compilador TypeScript de la línea de comandos con la opción --version .

    tsc --version

    Si ha instalado TypeScript, la salida contendrá el número de versión de TypeScript. Si TypeScript está instalado, continúe en Paso 1.4: Instalar el AWS CDK.

  2. Instale TypeScript. Para ello, ejecute el comando npm con la acción install, la opción -g y el nombre del paquete de TypeScript. De este modo se instala TypeScript como un paquete global en el entorno.

    npm install -g typescript
  3. Confirme que TypeScript se ha instalado. Para ello, ejecute el compilador TypeScript de la línea de comandos con la opción --version.

    tsc --version

    Si ha instalado TypeScript, la salida contendrá el número de versión de TypeScript.

Paso 1.4: Instalar el AWS CDK

  1. Confirme si ya ha instalado el AWS CDK. Para ello, con la sesión del terminal aún abierta en el IDE, ejecute el comando cdk con la opción --version .

    cdk --version

    Si el AWS CDK está instalado, el resultado contendrá el AWS CDK y los números de compilación. Vaya a Paso 2: Agregar el código.

  2. Para instalar AWS CDK, ejecute el comando npm junto con la acción install, el nombre del paquete de AWS CDK que se instalará y la opción -g para instalar el paquete de manera global en el entorno.

    npm install -g aws-cdk
  3. Confirme que el AWS CDK se ha instalado y que se hace referencia a él de forma correcta. Para ello, ejecute el comando cdk con la opción --version.

    cdk --version

    Si se ejecuta correctamente, se muestran los números de compilación y versión del AWS CDK.

Paso 2: Agregar el código

En este paso, se crea un proyecto de TypeScript de muestra que contiene todo el código fuente necesario para que el AWS CDK implemente una pila de AWS CloudFormation. Esta pila crea un tema de Amazon SNS y una cola de Amazon SQS en su cuenta de AWS y, a continuación, suscribe la cola al tema.

  1. Con la sesión del terminal aún abierta en el IDE, cree un directorio para almacenar el código fuente del proyecto; por ejemplo, un directorio ~/environment/hello-cdk en su entorno. Luego, cambie a ese directorio.

    rm -rf ~/environment/hello-cdk # Remove this directory if it already exists. mkdir ~/environment/hello-cdk # Create the directory. cd ~/environment/hello-cdk # Switch to the directory.
  2. Configure el directorio como un proyecto de lenguaje TypeScript para el AWS CDK. Para ello, ejecute el comando cdk con la acción init, la plantilla sample-app y la opción --language junto con el nombre del lenguaje de programación.

    cdk init sample-app --language typescript

    De esta forma, se crean los siguientes archivos y subdirectorios en el directorio.

    • Un subdirectorio .git y un archivo.gitignore ocultos, que hacen que el proyecto sea compatible con herramientas de control de código fuente como Git.

    • Un subdirectorio lib, que incluye un archivo hello-cdk-stack.ts. Este archivo contiene el código de la pila del AWS CDK. Este código se describe en el siguiente paso de este procedimiento.

    • Un subdirectorio bin, que incluye un archivo hello-cdk.ts. Este archivo contiene el punto de entrada de la aplicación del AWS CDK.

    • Un subdirectorio node_modules, que contiene los paquetes de código de apoyo que la aplicación y la pila pueden utilizar según sea necesario.

    • Un archivo .npmignore oculto, que enumera los tipos de subdirectorios y los archivos que npm no necesita al compilar el código.

    • Un archivocdk.json, que contiene la información para poder ejecutar el comando cdk más fácilmente.

    • Un archivo package-lock.json, que contiene información que npm puede utilizar para reducir posibles errores de compilación y ejecución.

    • Un archivo package.json, que contiene información para poder ejecutar el comando npm más fácilmente y con posiblemente menos errores de compilación y ejecución.

    • Un archivo README.md, que enumera comandos útiles que puede ejecutar con npm y el AWS CDK.

    • Un archivo tsconfig.json, que contiene información para poder ejecutar el comando tsc más fácilmente y con posiblemente menos errores de compilación y ejecución.

  3. En la ventana Environment (Entorno), abra el archivo lib/hello-cdk-stack.ts y examine el siguiente código en ese archivo.

    import sns = require('@aws-cdk/aws-sns'); import sqs = require('@aws-cdk/aws-sqs'); import cdk = require('@aws-cdk/cdk'); export class HelloCdkStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); const queue = new sqs.Queue(this, 'HelloCdkQueue', { visibilityTimeoutSec: 300 }); const topic = new sns.Topic(this, 'HelloCdkTopic'); topic.subscribeQueue(queue); } }
    • Las clases Stack, App, StackProps, Queue y Topic representan una pila de AWS CloudFormation y sus propiedades, un programa ejecutable, una cola de Amazon SQS y un tema de Amazon SNS, respectivamente.

    • La clase HelloCdkStack representa la pila de AWS CloudFormation para esta aplicación. Esta pila contiene la nueva cola de Amazon SQS y el tema de Amazon SNS para esta aplicación.

  4. En la ventana Environment (Entorno), abra el archivo bin/hello-cdk.ts y examine el siguiente código en ese archivo.

    #!/usr/bin/env node import cdk = require('@aws-cdk/cdk'); import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack'); app.run();

    Este código carga, crea una instancia y luego ejecuta la clase HelloCdkStack a partir del archivo lib/hello-cdk-stack.ts.

  5. Use npm para ejecutar el compilador de TypeScript para comprobar si hay errores de codificación y, a continuación, habilite el AWS CDK para ejecutar el archivo bin/hello-cdk.js del proyecto. Para ello, desde el directorio raíz del proyecto, ejecute el comando npm con la acción run y especifique el valor del comando build en el archivo package.json, tal y como se indica a continuación.

    npm run build

    El comando anterior ejecuta el compilador TypeScript, lo que añade los archivos de soporte bin/hello-cdk.d.ts y lib/hello-cdk-stack.d.ts. El compilador también transpone los archivos hello-cdk-stack.ts y hello-cdk.ts en los archivos hello-cdk-stack.js y hello-cdk.js.

Paso 3: Ejecutar el código

En este paso, le indica al AWS CDK que cree una plantilla de pila de AWS CloudFormation basada en el código del archivo bin/hello-cdk.js. A continuación, indique a AWS CDK que implemente la pila, lo que crea el tema de Amazon SNS y la cola de Amazon SQS y, a continuación, suscribe la cola al tema. Luego, confirme que el tema y la cola se han implementado correctamente enviando un mensaje del tema a la cola.

  1. Haga que el AWS CDK cree la plantilla de pila de AWS CloudFormation. Para ello, con la sesión del terminal aún abierta en el IDE, desde el directorio raíz del proyecto, ejecute el comando cdk con la acción synth y el nombre de la pila.

    cdk synth HelloCdkStack

    Si se ejecuta correctamente, la salida muestra la sección Resources de la plantilla de pila de AWS CloudFormation.

  2. La primera vez que implemente una aplicación del AWS CDK en un entorno para una combinación específica de cuenta de AWS y región de AWS, debe instalar una pila de arranque. Esta pila incluye diferentes recursos que el AWS CDK necesita para completar sus diversas operaciones. Por ejemplo, esta pila incluye un bucket de Amazon S3 que AWS CDK utiliza para almacenar plantillas y recursos durante los procesos de implementación. Para instalar la pila de arranque, ejecute el comando cdk con la acción bootstrap .

    cdk bootstrap
    nota

    Si ejecuta cdk bootstrap sin especificar ninguna opción, se utilizan la cuenta de AWS y la región de AWS predeterminadas. También puede arrancar un entorno específico especificando una combinación de perfil y cuenta/región. Por ejemplo:

    cdk bootstrap --profile test 123456789012/us-east-1
  3. Haga que el AWS CDK ejecute la plantilla de pila de AWS CloudFormation para implementar la pila. Para ello, desde el directorio raíz del proyecto, ejecute el comando cdk con la acción deploy y el nombre de la pila.

    cdk deploy HelloCdkStack

    Si se ejecuta correctamente, la salida muestra que la pila HelloCdkStack se ha implementado sin errores.

    nota

    Si el resultado muestra un mensaje en el que se indica que la pila no define un entorno y que las credenciales de AWS no se han podido obtener de ubicaciones estándar, o bien que no hay ninguna región configurada, asegúrese de que sus credenciales de AWS estén establecidas correctamente en el IDE y, a continuación, vuelva a ejecutar el comando cdk deploy . Para obtener más información, consulte Llamar a los AWS services desde un entorno en AWS Cloud9.

  4. Para confirmar que el tema de Amazon SNS y la cola de Amazon SQS se han implementado correctamente, envíe un mensaje al tema y, luego, verifique la cola para ver si se ha recibido el mensaje. Para ello, puede utilizar una herramienta como la AWS Command Line Interface (AWS CLI) o el AWS CloudShell. Para obtener más información sobre estas herramientas, consulte AWS Command Line Interface y tutorial de aws-shell para AWS Cloud9.

    Por ejemplo, para enviar un mensaje al tema, con la sesión del terminal aún abierta en el IDE, use AWS CLI para ejecutar el comando publish de Amazon SNS, y especifique el asunto y cuerpo del mensaje, la región de AWS del tema y el nombre de recurso de Amazon (ARN) del tema.

    aws sns publish --subject "Hello from the AWS CDK" --message "This is a message from the AWS CDK." --topic-arn arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K

    En el comando anterior, reemplace arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K por el ARN que AWS CloudFormation asigna al tema. Para obtener el ID, puede ejecutar el comando list-topics de Amazon SNS.

    aws sns list-topics --output table --query 'Topics[*].TopicArn'

    Si se ejecuta correctamente, la salida del comando publish muestra el valor de MessageId del mensaje que se publicó.

    Para verificar la cola para ver si se ha recibido el mensaje, ejecute el comando receive-message de Amazon SQS y proporcione la URL de la cola.

    aws sqs receive-message --queue-url https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K

    En el comando anterior, reemplace https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K por el ARN que AWS CloudFormation asigna a la cola. Para obtener la URL, puede ejecutar el comando list-queues de Amazon SQS.

    aws sqs list-queues --output table --query 'QueueUrls[*]'

    Si se ejecuta correctamente, la salida del comando receive-message muestra información del mensaje que se recibió.

Paso 4: Limpiar

Para evitar que se realicen cargos continuos en su cuenta de AWS después de que haya terminado de usar esta muestra, elimine la pila de AWS CloudFormation. De esta forma se eliminan el tema de Amazon SNS y la cola de Amazon SQS. También debe eliminar el entorno.

Paso 4.1: Eliminar la pila

Con la sesión del terminal aún abierta en el IDE, desde el directorio raíz del proyecto, ejecute el comando cdk con la acción destroy y el nombre de la pila.

cdk destroy HelloCdkStack

Cuando se le pida que elimine la pila, escriba y y, a continuación, pulse Enter.

Si se ejecuta correctamente, la salida muestra que la pila HelloCdkStack se ha eliminado sin errores.

Paso 4.2: Eliminar el entorno

Para eliminar el entorno, consulte Eliminación de un entorno en AWS Cloud9.