Distribuisci applicazioni multi-stack utilizzando AWS CDK con TypeScript - Prontuario AWS

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.

Il diagramma seguente mostra l'architettura dell'applicazione serverless in tempo reale di esempio.

Architettura dell'applicazione nella regione.

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àDescrizioneCompetenze richieste

Installa AWS CDK Toolkit.

Per installare AWS CDK Toolkit a livello globale, esegui il seguente comando.

npm install -g aws-cdk

DevOps

Verifica la versione.

Per verificare la versione di AWS CDK Toolkit, esegui il comando seguente. 

cdk --version

DevOps
AttivitàDescrizioneCompetenze richieste

Configura le credenziali.

Per configurare le credenziali, esegui il aws configure comando e segui le istruzioni.

$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
AttivitàDescrizioneCompetenze richieste

Scarica il codice del progetto allegato.

Per ulteriori informazioni sulla directory e sulla struttura dei file, consulta la sezione Informazioni aggiuntive.

DevOps
AttivitàDescrizioneCompetenze richieste

Avvia l'ambiente.

Per distribuire il CloudFormation modello AWS nell'account e nella regione AWS che desideri utilizzare, esegui il comando seguente.

cdk bootstrap <account>/<Region>

Per ulteriori informazioni, consulta la documentazione di AWS.

DevOps
AttivitàDescrizioneCompetenze richieste

Compilare il progetto.

Per creare il codice del progetto, esegui il npm run build comando.

DevOps

Distribuisci il progetto

Per distribuire il codice del progetto, esegui il cdk deploy comando.

AttivitàDescrizioneCompetenze 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àDescrizioneCompetenze 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 Generator.

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. Avvia il modello, quindi inserisci il nome utente e la password di Amazon Cognito.

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 GET metodo per recuperare i dati.

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.

Allegati

Per accedere al contenuto aggiuntivo associato a questo documento, decomprimi il seguente file: attachment.zip