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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)
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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)
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
Tarea | Descripción | Habilidades 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.
| DevOps |
Verificar la versión. | Para verificar la versión del kit de herramientas de AWS CDK, ejecute el siguiente comando.
| DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configurar las credenciales. | Para configurar las credenciales, ejecute el comando
| DevOps |
Tarea | Descripción | Habilidades 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 |
Tarea | Descripción | Habilidades 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.
Para obtener más información, consulte la documentación de AWS. | DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Compilar el proyecto. | Para compilar el código del proyecto, ejecute el comando | DevOps |
Implementar el proyecto. | Para implementar el código del proyecto, ejecute el comando |
Tarea | Descripción | Habilidades 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 |
Tarea | Descripción | Habilidades 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. 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 | 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 enlib/
.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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip