Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Distribuisci applicazioni multi-stack utilizzando AWS CDK con TypeScript
Creato dal dott. Rahul Sharad Gaikwad (AWS)
Ambiente: produzione | Tecnologie: modernizzazione; migrazione; DevOps | Carico di lavoro: tutti gli altri carichi di lavoro |
Servizi AWS: Amazon API Gateway; AWS Lambda; Amazon Kinesis |
Riepilogo
Questo modello fornisce un step-by-step approccio per la distribuzione di applicazioni su Amazon Web Services (AWS) utilizzando AWS Cloud Development Kit (AWS CDK) con TypeScript. Ad esempio, il pattern implementa un'applicazione di analisi in tempo reale senza server.
Il pattern crea e distribuisce applicazioni stack annidate. Lo stack AWS principale chiama gli CloudFormation stack secondari, o annidati. Ogni stack secondario crea e distribuisce le risorse AWS definite nello stack. CloudFormation AWS CDK Toolkit, il comando dell'interfaccia a riga di comando (CLI)cdk
, è l'interfaccia principale per gli stack. CloudFormation
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
Cloud privato virtuale (VPC) e sottoreti esistenti
AWS CDK Toolkit installato e configurato
Un utente con autorizzazioni di amministratore e un set di chiavi di accesso.
Node.js
Interfaccia a riga di comando di AWS (CLI AWS)
Limitazioni
Poiché AWS CDK utilizza AWS CloudFormation, le applicazioni AWS CDK sono soggette a quote di CloudFormation servizio. Per ulteriori informazioni, consulta AWS CloudFormation quotas.
Versioni del prodotto
Questo modello è stato creato e testato utilizzando i seguenti strumenti e versioni.
Kit di strumenti CDK AWS 1.83.0
Node.js 14.13.0
npm 7.0.14
Il modello dovrebbe funzionare con qualsiasi versione di AWS CDK o npm. Tieni presente che le versioni di Node.js dalla 13.0.0 alla 13.6.0 non sono compatibili con AWS CDK.
Architettura
Stack tecnologico Target
Console AWS Amplify
Amazon API Gateway
AWS CDK
Amazon CloudFront
Amazon Cognito
Amazon DynamoDB
Amazon Data Firehose
Flusso di dati Amazon Kinesis
AWS Lambda
Amazon Simple Storage Service (Amazon S3)
Architettura Target
Il diagramma seguente mostra la distribuzione di applicazioni a stack multiplo utilizzando AWS CDK con. TypeScript
![Architettura dello stack nel VPC, con uno stack principale e due stack secondari che contengono risorse.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)
Il diagramma seguente mostra l'architettura dell'applicazione serverless in tempo reale di esempio.
![Architettura dell'applicazione nella regione.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)
Strumenti
Strumenti
La console AWS Amplify è il centro di controllo per le distribuzioni complete di applicazioni web e mobili in AWS. L'hosting di Amplify Console offre un flusso di lavoro basato su git per l'hosting di app web serverless fullstack con distribuzione continua. L'interfaccia utente di amministrazione è un'interfaccia visiva per gli sviluppatori web e mobili di frontend per creare e gestire i backend di app al di fuori della console AWS.
Amazon API Gateway è un servizio AWS per la creazione, la pubblicazione, la manutenzione, il monitoraggio e la protezione di REST, HTTP e WebSocket API su qualsiasi scala.
AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software che aiuta a definire e fornire l'infrastruttura cloud AWS in codice.
AWS CDK Toolkit è un kit di sviluppo cloud a riga di comando che ti aiuta a interagire con la tua app AWS CDK. Il comando
cdk
CLI è lo strumento principale per interagire con l'app AWS CDK. Esegue la tua app, interroga il modello di applicazione che hai definito e produce e distribuisce i CloudFormation modelli AWS generati dal CDK AWS.Amazon CloudFront è un servizio Web che accelera la distribuzione di contenuti Web statici e dinamici, come .html, .css, .js e file di immagine. CloudFront distribuisce i tuoi contenuti attraverso una rete mondiale di data center denominati edge location per ridurre la latenza e migliorare le prestazioni.
Amazon Cognito fornisce autenticazione, autorizzazione e gestione degli utenti per le tue app Web e mobili. I tuoi utenti possono accedere direttamente o tramite terze parti.
Amazon DynamoDB è un servizio di database NoSQL completamente gestito che offre prestazioni veloci e prevedibili con una scalabilità perfetta.
Amazon Data Firehose è un servizio completamente gestito per la distribuzione di dati di streaming
in tempo reale a destinazioni come Amazon S3, Amazon Redshift, OpenSearch Amazon Service, Splunk e qualsiasi endpoint HTTP o endpoint HTTP personalizzato di proprietà di provider di servizi terzi supportati. Amazon Kinesis Data Streams è un servizio per la raccolta e l'elaborazione di grandi flussi di record di dati in tempo reale.
AWS Lambda è un servizio di elaborazione che supporta l'esecuzione di codice senza effettuare il provisioning o la gestione di server. Lambda esegue il codice solo quando è necessario e si dimensiona automaticamente, da poche richieste al giorno a migliaia al secondo. Verrà addebitato soltanto il tempo di calcolo consumato e non verrà addebitato alcun costo quando il codice non è in esecuzione.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
Codice
Il codice per questo modello è allegato.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Installa AWS CDK Toolkit. | Per installare AWS CDK Toolkit a livello globale, esegui il seguente comando.
| DevOps |
Verifica la versione. | Per verificare la versione di AWS CDK Toolkit, esegui il comando seguente.
| DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura le credenziali. | Per configurare le credenziali, esegui il
| DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Scarica il codice del progetto allegato. | Per ulteriori informazioni sulla directory e sulla struttura dei file, consulta la sezione Informazioni aggiuntive. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Avvia l'ambiente. | Per distribuire il CloudFormation modello AWS nell'account e nella regione AWS che desideri utilizzare, esegui il comando seguente.
Per ulteriori informazioni, consulta la documentazione di AWS. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Compilare il progetto. | Per creare il codice del progetto, esegui il | DevOps |
Distribuisci il progetto | Per distribuire il codice del progetto, esegui il |
Attività | Descrizione | Competenze richieste |
---|---|---|
Verifica la creazione dello stack. | Nella Console di gestione AWS, scegli CloudFormation. Negli stack del progetto, verifica che siano stati creati uno stack principale e due stack secondari. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Invia dati a Kinesis Data Streams. | Configura il tuo account AWS per inviare dati a Kinesis Data Streams utilizzando Amazon Kinesis Data Generator (KDG). Per ulteriori informazioni, consulta Amazon Kinesis Data | DevOps |
Crea un utente Amazon Cognito. | Per creare un utente Amazon Cognito, scarica il modello cognito-setup.json CloudFormation dalla sezione Crea un utente Amazon Cognito della pagina di aiuto di Kinesis Data Generator. La scheda Output elenca l'URL di Kinesis Data Generator. | DevOps |
Accedi a Kinesis Data Generator | Per accedere a KDG, utilizza le credenziali di Amazon Cognito che hai fornito e l'URL di Kinesis Data Generator. | DevOps |
Testare l'applicazione. | In KDG, in Record template, Template 1, incolla il codice di test dalla sezione Informazioni aggiuntive e scegli Invia dati. | DevOps |
Gateway API di prova. | Dopo aver inserito i dati, prova API Gateway utilizzando il | DevOps |
Risorse correlate
Riferimenti
Informazioni aggiuntive
Dettagli di directory e file
Questo modello imposta le seguenti tre pile.
parent-cdk-stack.ts
— Questo stack funge da stack principale e chiama le due applicazioni secondarie come stack annidati.real-time-analytics-poc-stack.ts
— Questo stack annidato contiene l'infrastruttura e il codice dell'applicazione.real-time-analytics-web-stack.ts
— Questo stack annidato contiene solo il codice statico dell'applicazione Web.
File importanti e relative funzionalità
bin/real-time-analytics-poc.ts
— Punto di ingresso dell'applicazione AWS CDK. Carica tutti gli stack definiti in.lib/
lib/real-time-analytics-poc-stack.ts
— Definizione dello stack dell'applicazione AWS CDK ()real-time-analytics-poc
.lib/real-time-analytics-web-stack.ts
— Definizione dello stack dell'applicazione AWS CDK ()real-time-analytics-web-stack
.lib/parent-cdk-stack.ts
— Definizione dello stack dell'applicazione AWS CDK ()parent-cdk
.package.json
— manifesto del modulo npm, che include il nome, la versione e le dipendenze dell'applicazione.package-lock.json
— Gestito da npm.cdk.json
— Toolkit per l'esecuzione dell'applicazione.tsconfig.json
— La TypeScript configurazione del progetto..gitignore
— Elenco di file che Git dovrebbe escludere dal controllo del codice sorgente.node_modules
— Gestito da npm; include le dipendenze del progetto.
La seguente sezione di codice nello stack principale chiama le applicazioni secondarie come stack CDK AWS annidati.
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'); } }
Codice per i test
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})}}|
Test dell'API Gateway
Sulla console API Gateway, prova API Gateway utilizzando il GET
metodo.
![Console API Gateway con GET selezionato in OPZIONI.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)