Implemente aplicaciones de varias pilas mediante AWS CDK con TypeScript - Recomendaciones de AWS

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.

Implemente aplicaciones de varias pilas mediante AWS CDK con TypeScript

Creado por el Dr. Rahul Sharad Gaikwad (AWS)

Entorno: producción

Tecnologías: modernización; migración; DevOps

Carga de trabajo: todas las demás cargas de trabajo

Servicios de AWS: Amazon API Gateway; AWS Lambda; Amazon Kinesis

Resumen

Este patrón proporciona un step-by-step enfoque para la implementación de aplicaciones en Amazon Web Services (AWS) mediante el AWS Cloud Development Kit (AWS CDK) con TypeScript. Por ejemplo, el patrón implementa una aplicación de análisis en tiempo real sin servidor.

El patrón crea e implementa aplicaciones de pila anidada. La CloudFormation pila de AWS principal llama a las pilas secundarias o anidadas.  Cada pila secundaria crea e implementa los recursos de AWS que se definen en la CloudFormation pila. AWS CDK Toolkit, el comando de la interfaz de línea de comandos (CLI)cdk, es la interfaz principal de las CloudFormation pilas.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Una nube privada virtual (VPC) y subredes existentes

  • Kit de herramientas de AWS CDK instalado y configurado

  • Un usuario con permisos de administrador y un conjunto de claves de acceso.

  • Node.js

  • Interfaz de la línea de comandos de AWS (AWS CLI)

Limitaciones

  • Como la CDK de AWS utiliza AWS CloudFormation, las aplicaciones de la CDK de AWS están sujetas a cuotas de CloudFormation servicio. Para obtener más información, consulte CloudFormation Cuotas de AWS.

Versiones de producto

Este patrón se ha creado y probado usando las siguientes herramientas y versiones.

  • Kit de herramientas de AWS CDK 1.83.0

  • Node.js 14.13.0

  • npm 7.0.14

El patrón debería funcionar con cualquier versión de AWS CDK o npm. Tenga en cuenta que las versiones 13.0.0 a 13.6.0 de Node.js no son compatibles con AWS CDK.

Arquitectura

Pila de tecnología de destino

  • Consola de AWS Amplify

  • Amazon API Gateway

  • AWS CDK

  • Amazon CloudFront

  • Amazon Cognito

  • Amazon DynamoDB

  • Amazon Data Firehose

  • Amazon Kinesis Data Streams

  • AWS Lambda

  • Amazon Simple Storage Service (Amazon S3)

Arquitectura de destino

En el siguiente diagrama se muestra la implementación de aplicaciones de varias pilas mediante AWS CDK con. TypeScript

Arquitectura de pila en la VPC, con una pila principal y dos pilas secundarias que contienen recursos.

En el siguiente diagrama se muestra la arquitectura de la aplicación en tiempo real sin servidor de ejemplo.

Arquitectura de la aplicación en la región.

Herramientas

Herramientas

  • La Consola de AWS Amplify es el centro de control para las implementaciones de aplicaciones web y móviles de pila completa en AWS. El alojamiento de la consola de Amplify proporciona un flujo de trabajo basado en Git para alojar aplicaciones web sin servidor de pila completa con implementación continua. La interfaz de usuario de administración es una interfaz visual para que los desarrolladores de frontend web y móvil puedan crear y administrar el backend de aplicaciones fuera de la Consola de AWS.

  • Amazon API Gateway es un servicio de AWS para crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket API a cualquier escala.

  • AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.

  • El Kit de herramientas de AWS CDK es un kit de desarrollo en la nube de línea de comandos que le ayuda a interactuar con su aplicación AWS CDK. El comando cdk de la CLI es la herramienta principal para interactuar con su aplicación AWS CDK. Ejecuta su aplicación, interroga el modelo de aplicación que ha definido y produce e implementa las CloudFormation plantillas de AWS generadas por la CDK de AWS.

  • Amazon CloudFront es un servicio web que acelera la distribución de contenido web estático y dinámico, como .html, .css, .js y archivos de imagen. CloudFront entrega su contenido a través de una red mundial de centros de datos denominados ubicaciones perimetrales para reducir la latencia y mejorar el rendimiento.

  • Amazon Cognito ofrece autenticación, autorización y administración de usuarios para sus aplicaciones móviles y web. Sus usuarios pueden iniciar sesión directamente o a través de un tercero.

  • Amazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido y predecible, así como una perfecta escalabilidad.

  • Amazon Data Firehose es un servicio totalmente gestionado para entregar datos de streaming en tiempo real a destinos como Amazon S3, Amazon Redshift, OpenSearch Amazon Service, Splunk y cualquier punto de enlace HTTP personalizado o punto de enlace HTTP propiedad de proveedores de servicios externos compatibles.

  • Amazon Kinesis Data Streams es un servicio que permite recopilar y procesar grandes flujos de registros de datos en tiempo real.

  • AWS Lambda es un servicio de computación que permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. Solo pagará por el tiempo de computación que consuma, no se aplican cargos cuando el código no se está ejecutando.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

Código

Se adjunta el código de este patrón.

Epics

TareaDescripciónHabilidades requeridas

Instale el kit de herramientas de AWS CDK.

Para instalar el kit de herramientas de AWS CDK a nivel global, ejecute el siguiente comando.

npm install -g aws-cdk

DevOps

Verificar la versión.

Para verificar la versión del kit de herramientas de AWS CDK, ejecute el siguiente comando. 

cdk --version

DevOps
TareaDescripciónHabilidades requeridas

Configurar las credenciales.

Para configurar las credenciales, ejecute el comando aws configure y siga las instrucciones.

$aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:
DevOps
TareaDescripciónHabilidades requeridas

Descargar el código del proyecto adjunto.

Para obtener más información sobre la estructura de los directorios y archivos, consulte la sección Información adicional.

DevOps
TareaDescripciónHabilidades requeridas

Inicie el entorno.

Para implementar la CloudFormation plantilla de AWS en la cuenta y la región de AWS que desee usar, ejecute el siguiente comando.

cdk bootstrap <account>/<Region>

Para obtener más información, consulte la documentación de AWS.

DevOps
TareaDescripciónHabilidades requeridas

Compilar el proyecto.

Para compilar el código del proyecto, ejecute el comando npm run build.

DevOps

Implementar el proyecto.

Para implementar el código del proyecto, ejecute el comando cdk deploy.

TareaDescripciónHabilidades requeridas

Verificar la creación de la pila.

En la consola de administración de AWS, elija CloudFormation. En las pilas del proyecto, verifique que se hayan creado una pila principal y dos pilas secundarias.

DevOps
TareaDescripciónHabilidades requeridas

Enviar datos a Kinesis Data Streams.

Configure su cuenta de AWS para enviar datos a Kinesis Data Streams mediante Amazon Kinesis Data Generator (KDG). Para obtener más información, consulte Amazon Kinesis Data Generator.

DevOps

Crear un usuario de Amazon Cognito.

Para crear un usuario de Amazon Cognito, descargue la plantilla cognito-setup.json de la sección Crear un usuario de Amazon Cognito de CloudFormation la página de ayuda de Kinesis Data Generator. Inicie la plantilla y, a continuación, introduzca su nombre de usuario y contraseña de Amazon Cognito.

La pestaña Salidas muestra la URL de Kinesis Data Generator.

DevOps

Inicio de sesión en Kinesis Data Generator

Para iniciar sesión en KDG, utilice las credenciales de Amazon Cognito que ha introducido y la URL de Kinesis Data Generator.

DevOps

Probar la aplicación.

En KDG, en Plantilla de registro, Plantilla 1, pegue el código de prueba de la sección Información adicional y seleccione Enviar datos.

DevOps

Probar API Gateway.

Una vez incorporados los datos, pruebe API Gateway mediante el método GET para recuperar los datos.

DevOps

Recursos relacionados

Referencias

Información adicional

Detalles del directorio y el archivo

Este patrón configura las tres siguientes pilas.

  • parent-cdk-stack.ts: esta pila actúa como pila principal y llama a las dos aplicaciones secundarias como pilas anidadas. 

  • real-time-analytics-poc-stack.ts: esta pila anidada contiene la infraestructura y el código de la aplicación.

  • real-time-analytics-web-stack.ts: esta pila anidada contiene únicamente el código estático de la aplicación web.

Archivos importantes y su funcionalidad

  • bin/real-time-analytics-poc.ts: punto de entrada de la aplicación AWS CDK. Carga todas las pilas definidas en lib/.

  • lib/real-time-analytics-poc-stack.ts: definición de la pila de la aplicación AWS CDK (real-time-analytics-poc).

  • lib/real-time-analytics-web-stack.ts: definición de la pila de la aplicación AWS CDK (real-time-analytics-web-stack).

  • lib/parent-cdk-stack.ts: definición de la pila de la aplicación AWS CDK (parent-cdk).

  • package.json: manifiesto del módulo npm, que incluye el nombre, la versión y las dependencias de la aplicación.

  • package-lock.json: mantenimiento por parte de npm.

  • cdk.json: kit de herramientas para ejecutar la aplicación.

  • tsconfig.json— La TypeScript configuración del proyecto.

  • .gitignore: lista de archivos que Git debe excluir del control de código de origen.

  • node_modules: mantenimiento por parte de npm; incluye las dependencias del proyecto.

La siguiente sección de código de la pila principal llama a las aplicaciones secundarias como pilas anidadas de AWS CDK.

import * as cdk from '@aws-cdk/core'; import { Construct, Stack, StackProps } from '@aws-cdk/core'; import { RealTimeAnalyticsPocStack } from './real-time-analytics-poc-stack'; import { RealTimeAnalyticsWebStack } from './real-time-analytics-web-stack'; export class CdkParentStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new RealTimeAnalyticsPocStack(this, 'RealTimeAnalyticsPocStack'); new RealTimeAnalyticsWebStack(this, 'RealTimeAnalyticsWebStack'); } }

Código para realizar pruebas

session={{date.now('YYYYMMDD')}}|sequence={{date.now('x')}}|reception={{date.now('x')}}|instrument={{random.number(9)}}|l={{random.number(20)}}|price_0={{random.number({"min":10000, "max":30000})}}|price_1={{random.number({"min":10000, "max":30000})}}|price_2={{random.number({"min":10000, "max":30000})}}|price_3={{random.number({"min":10000, "max":30000})}}|price_4={{random.number({"min":10000, "max":30000})}}|price_5={{random.number({"min":10000, "max":30000})}}|price_6={{random.number({"min":10000, "max":30000})}}|price_7={{random.number({"min":10000, "max":30000})}}|price_8={{random.number({"min":10000, "max":30000})}}|

Pruebas de API Gateway

En la consola de API Gateway, pruebe API Gateway mediante el método GET.

La consola API Gateway con GET se selecciona en OPCIONES.

Conexiones

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip