Implemente aplicaciones de pila múltiple mediante AWS CDK 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 pila múltiple mediante AWS CDK 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

AWSservicios: Amazon API Gateway; AWS Lambda; Amazon Kinesis

Resumen

Este patrón proporciona un step-by-step enfoque para el despliegue de aplicaciones en Amazon Web Services (AWS) mediante el AWS Cloud Development Kit (AWSCDK) 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 AWS CloudFormation pila principal llama a las pilas secundarias o anidadas.  Cada pila secundaria crea e implementa los AWS recursos que están definidos en la pila. CloudFormation AWSCDKToolkit, 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 activa AWS

  • Nube privada virtual (VPC) y subredes existentes

  • AWSCDKKit de herramientas instalado y configurado

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

  • Node.js

  • AWSInterfaz de línea de comandos () AWS CLI

Limitaciones

  • Debido a AWS CDK los usos AWS CloudFormation, AWS CDK las aplicaciones están sujetas a cuotas CloudFormation de servicio. Para obtener más información, consulte AWS CloudFormation cuotas.

Versiones de producto

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

  • AWSCDKKit de herramientas 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

  • AWSAmplify Console

  • Amazon API Gateway

  • AWS CDK

  • Amazon CloudFront

  • Amazon Cognito

  • Amazon DynamoDB

  • Amazon Data Firehose

  • Amazon Kinesis Data Streams

  • AWSLambda

  • Amazon Simple Storage Service (Amazon S3)

Arquitectura de destino

El siguiente diagrama muestra el despliegue de aplicaciones de varias pilas utilizando with. AWS CDK TypeScript

Arquitectura de pila enVPC, 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

  • AWSAmplify Console es el centro de control para despliegues completos de aplicaciones web y móviles 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 aplicaciones web y móviles creen y administren los backends de aplicaciones fuera de la consola. AWS

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

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

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

  • 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 SQL sin base de datos totalmente gestionado que proporciona un rendimiento rápido y predecible con una escalabilidad perfecta.

  • 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 HTTP cualquier HTTP punto final personalizado 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.

  • AWSLambda es un servicio informático que admite la ejecución de 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 AWS CDK kit de herramientas.

Para instalar AWS CDK Toolkit globalmente, ejecute el siguiente comando.

npm install -g aws-cdk

DevOps

Verificar la versión.

Para comprobar la versión del AWS CDK kit de herramientas, 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 AWS CloudFormation plantilla en la cuenta y AWS la región que desee usar, ejecute el siguiente comando.

cdk bootstrap <account>/<Region>

Para obtener más información, consulte la AWSdocumentación.

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 AWS de administración, 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 AWS cuenta para enviar datos a Kinesis Data Streams mediante Amazon Kinesis Data KDG Generator (). 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 el generador de datos de Kinesis. URL

DevOps

Inicio de sesión en Kinesis Data Generator

Para iniciar sesiónKDG, utilice las credenciales de Amazon Cognito que ha proporcionado y el generador de datos de Kinesis. URL

DevOps

Probar la aplicación.

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

DevOps

APIPuerta de enlace de prueba.

Una vez ingeridos los datos, pruebe API Gateway mediante el GET método 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 AWS CDK aplicación. Carga todas las pilas definidas en lib/.

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

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

  • lib/parent-cdk-stack.ts— Definición de la pila de la AWS CDK aplicación (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 denomina a las aplicaciones secundarias como AWS CDK pilas anidadas.

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})}}|

Probando Gateway API

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

APIGateway Console con la opción GET seleccionada de las siguientes OPTIONS opciones.

Conexiones

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