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
En el siguiente diagrama se muestra la arquitectura de la aplicación en tiempo real sin servidor de ejemplo.
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 CDKAmazon 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
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instale el AWS CDK kit de herramientas. | Para instalar AWS CDK Toolkit globalmente, ejecute el siguiente comando.
| DevOps |
Verificar la versión. | Para comprobar la versión del AWS CDK kit de herramientas, 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 AWS CloudFormation plantilla en la cuenta y AWS la región que desee usar, ejecute el siguiente comando.
Para obtener más información, consulte la AWSdocumentación. | 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 AWS de administración, 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 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. 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 | 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 enlib/
.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.
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip