Stellen Sie Multi-Stack-Anwendungen mithilfe von AWS CDK bereit mit TypeScript - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Stellen Sie Multi-Stack-Anwendungen mithilfe von AWS CDK bereit mit TypeScript

Erstellt von Dr. Rahul Sharad Gaikwad (AWS)

Umwelt: Produktion

Technologien: Modernisierung; Migration; DevOps

Arbeitslast: Alle anderen Workloads

AWS-Dienste: Amazon API Gateway; AWS Lambda; Amazon Kinesis

Übersicht

Dieses Muster bietet einen step-by-step Ansatz für die Anwendungsbereitstellung auf Amazon Web Services (AWS) mithilfe des AWS Cloud Development Kit (AWS CDK) mit TypeScript. Das Muster stellt beispielsweise eine serverlose Echtzeit-Analyseanwendung bereit.

Das Muster erstellt und implementiert verschachtelte Stack-Anwendungen. Der übergeordnete CloudFormation AWS-Stack ruft die untergeordneten oder verschachtelten Stacks auf.  Jeder untergeordnete Stack erstellt und stellt die AWS-Ressourcen bereit, die im CloudFormation Stack definiert sind. AWS CDK Toolkit, der Befehl Command Line Interface (CLI)cdk, ist die primäre Schnittstelle für die CloudFormation Stacks.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • Bestehende virtuelle private Cloud (VPC) und Subnetze

  • AWS CDK Toolkit installiert und konfiguriert

  • Ein Benutzer mit Administratorrechten und einer Reihe von Zugriffsschlüsseln.

  • Node.js

  • AWS-Befehlszeilenschnittstelle (AWS Command Line Interface, AWS CLI)

Einschränkungen

  • Da AWS CDK AWS verwendet CloudFormation, unterliegen AWS CDK-Anwendungen CloudFormation Service-Kontingenten. Weitere Informationen finden Sie unter CloudFormation AWS-Kontingente.

Produktversionen

Dieses Muster wurde mit den folgenden Tools und Versionen erstellt und getestet.

  • AWS-CDK-Toolkit 1.83.0

  • Node.js 14,13.0

  • npm 7.0.14

Das Muster sollte mit jeder Version von AWS CDK oder npm funktionieren. Beachten Sie, dass die Versionen 13.0.0 bis 13.6.0 von Node.js nicht mit dem AWS CDK kompatibel sind.

Architektur

Zieltechnologie-Stack

  • AWS Amplify Amplify-Konsole

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

Zielarchitektur

Das folgende Diagramm zeigt die Bereitstellung mehrerer Stack-Anwendungen mithilfe von AWS CDK mit. TypeScript

Stack-Architektur in der VPC mit einem übergeordneten Stack und zwei untergeordneten Stacks, die Ressourcen enthalten.

Das folgende Diagramm zeigt die Architektur der beispielhaften serverlosen Echtzeitanwendung.

Anwendungsarchitektur in der Region.

Tools

Tools

  • Die AWS Amplify Console ist das Kontrollzentrum für Full-Stack-Bereitstellungen von Web- und Mobilanwendungen in AWS. Amplify Console Hosting bietet einen Git-basierten Workflow für das Hosten serverloser Full-Stack-Web-Apps mit kontinuierlicher Bereitstellung. Die Admin-Benutzeroberfläche ist eine visuelle Oberfläche für Frontend-Web- und Mobilentwickler, um App-Backends außerhalb der AWS-Konsole zu erstellen und zu verwalten.

  • Amazon API Gateway ist ein AWS-Service für die Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.

  • Das AWS Cloud Development Kit (AWS CDK) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.

  • AWS CDK Toolkit ist ein Befehlszeilen-Cloud-Entwicklungskit, das Sie bei der Interaktion mit Ihrer AWS-CDK-App unterstützt. Der cdk CLI-Befehl ist das wichtigste Tool für die Interaktion mit Ihrer AWS-CDK-App. Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die vom AWS-CDK generierten CloudFormation AWS-Vorlagen bereit.

  • Amazon CloudFront ist ein Webservice, der die Verteilung statischer und dynamischer Webinhalte wie .html-, .css-, .js- und Bilddateien beschleunigt. CloudFront stellt Ihre Inhalte über ein weltweites Netzwerk von Rechenzentren bereit, die als Edge-Standorte bezeichnet werden, um die Latenz zu verringern und die Leistung zu verbessern.

  • Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Ihre Web- und mobilen Apps. Ihre Benutzer können sich direkt oder über einen Drittanbieter anmelden.

  • Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet.

  • Amazon Data Firehose ist ein vollständig verwalteter Service für die Bereitstellung von Echtzeit-Streaming-Daten an Ziele wie Amazon S3, Amazon Redshift, Amazon OpenSearch Service, Splunk und alle benutzerdefinierten HTTP-Endpunkte oder HTTP-Endpunkte, die unterstützten Drittanbietern gehören.

  • Amazon Kinesis Data Streams ist ein Service zum Sammeln und Verarbeiten großer Datenströme in Echtzeit.

  • AWS Lambda ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. Sie bezahlen nur für die Datenverarbeitungszeit, die Sie wirklich nutzen und es werden keine Gebühren in Rechnung gestellt, wenn Ihr Code nicht ausgeführt wird.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

Code

Der Code für dieses Muster ist angehängt.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Installieren Sie das AWS CDK Toolkit.

Führen Sie den folgenden Befehl aus, um AWS CDK Toolkit global zu installieren.

npm install -g aws-cdk

DevOps

Überprüfen Sie die Version.

Führen Sie den folgenden Befehl aus, um die Version des AWS CDK Toolkit zu überprüfen. 

cdk --version

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie Anmeldeinformationen ein.

Um Anmeldeinformationen einzurichten, führen Sie den aws configure Befehl aus und folgen Sie den Anweisungen.

$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
AufgabeBeschreibungErforderliche Fähigkeiten

Laden Sie den beigefügten Projektcode herunter.

Weitere Informationen zur Verzeichnis- und Dateistruktur finden Sie im Abschnitt Zusätzliche Informationen.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Bootstrap für die Umgebung.

Führen Sie den folgenden Befehl aus, um die CloudFormation AWS-Vorlage für das Konto und die AWS-Region bereitzustellen, die Sie verwenden möchten.

cdk bootstrap <account>/<Region>

Weitere Informationen finden Sie in der AWS-Dokumentation.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie das Projekt.

Führen Sie den npm run build Befehl aus, um den Projektcode zu erstellen.

DevOps

Stellen Sie das Projekt bereit.

Führen Sie den cdk deploy Befehl aus, um den Projektcode bereitzustellen.

AufgabeBeschreibungErforderliche Fähigkeiten

Überprüfen Sie die Stack-Erstellung.

Wählen Sie in der AWS-Managementkonsole CloudFormation. Vergewissern Sie sich, dass in den Stacks für das Projekt ein übergeordneter Stack und zwei untergeordnete Stapel erstellt wurden.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Senden Sie Daten an Kinesis Data Streams.

Konfigurieren Sie Ihr AWS-Konto so, dass Daten mithilfe von Amazon Kinesis Data Generator (KDG) an Kinesis Data Streams gesendet werden. Weitere Informationen finden Sie unter Amazon Kinesis Data Generator.

DevOps

Erstellen Sie einen Amazon Cognito Cognito-Benutzer.

Um einen Amazon Cognito Cognito-Benutzer zu erstellen, laden Sie die CloudFormation Vorlage cognito-setup.json aus dem Abschnitt Amazon Cognito Cognito-Benutzer erstellen auf der Kinesis Data Generator-Hilfeseite herunter. Initiieren Sie die Vorlage und geben Sie dann Ihren Amazon Cognito Cognito-Benutzernamen und Ihr Passwort ein.

Auf der Registerkarte Ausgaben ist die Kinesis Data Generator-URL aufgeführt.

DevOps

Melden Sie sich bei Kinesis Data Generator an

Um sich bei KDG anzumelden, verwenden Sie die von Ihnen angegebenen Amazon Cognito Cognito-Anmeldeinformationen und die Kinesis Data Generator-URL.

DevOps

Testen Sie die Anwendung.

Fügen Sie in KDG in Record template, Template 1, den Testcode aus dem Abschnitt Zusätzliche Informationen ein und wählen Sie Daten senden aus.

DevOps

Testen Sie das API Gateway.

Nachdem die Daten aufgenommen wurden, testen Sie API Gateway, indem Sie die GET Methode zum Abrufen von Daten verwenden.

DevOps

Zugehörige Ressourcen

Referenzen

Zusätzliche Informationen

Verzeichnis- und Dateidetails

Dieses Muster setzt die folgenden drei Stapel zusammen.

  • parent-cdk-stack.ts— Dieser Stapel fungiert als übergeordneter Stapel und ruft die beiden untergeordneten Anwendungen als verschachtelte Stapel auf. 

  • real-time-analytics-poc-stack.ts— Dieser verschachtelte Stapel enthält die Infrastruktur und den Anwendungscode.

  • real-time-analytics-web-stack.ts— Dieser verschachtelte Stapel enthält nur den statischen Webanwendungscode.

Wichtige Dateien und ihre Funktionalität

  • bin/real-time-analytics-poc.ts— Einstiegspunkt der AWS-CDK-Anwendung. Es lädt alle Stacks, die unter definiert sind. lib/

  • lib/real-time-analytics-poc-stack.ts— Definition des Stacks der AWS-CDK-Anwendung (real-time-analytics-poc).

  • lib/real-time-analytics-web-stack.ts— Definition des Stacks der AWS-CDK-Anwendung (real-time-analytics-web-stack).

  • lib/parent-cdk-stack.ts— Definition des Stacks der AWS-CDK-Anwendung (parent-cdk).

  • package.json— Das NPM-Modulmanifest, das den Namen, die Version und die Abhängigkeiten der Anwendung enthält.

  • package-lock.json— Wird von npm verwaltet.

  • cdk.json— Toolkit zum Ausführen der Anwendung.

  • tsconfig.json— Die TypeScript Konfiguration des Projekts.

  • .gitignore— Liste der Dateien, die Git von der Quellcodeverwaltung ausschließen soll.

  • node_modules— Wird von npm verwaltet; beinhaltet die Abhängigkeiten des Projekts.

Der folgende Codeabschnitt im übergeordneten Stack ruft untergeordnete Anwendungen als verschachtelte AWS-CDK-Stacks auf.

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

Code zum Testen

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

Testen des API Gateway

Testen Sie API Gateway auf der API Gateway Gateway-Konsole mithilfe der GET Methode.

API-Gateway-Konsole, bei der GET unter OPTIONS ausgewählt wurde.

Anlagen

Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip