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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)
Das folgende Diagramm zeigt die Architektur der beispielhaften serverlosen Echtzeitanwendung.
![Anwendungsarchitektur in der Region.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)
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
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Installieren Sie das AWS CDK Toolkit. | Führen Sie den folgenden Befehl aus, um AWS CDK Toolkit global zu installieren.
| DevOps |
Überprüfen Sie die Version. | Führen Sie den folgenden Befehl aus, um die Version des AWS CDK Toolkit zu überprüfen.
| DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Richten Sie Anmeldeinformationen ein. | Um Anmeldeinformationen einzurichten, führen Sie den
| DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Laden Sie den beigefügten Projektcode herunter. | Weitere Informationen zur Verzeichnis- und Dateistruktur finden Sie im Abschnitt Zusätzliche Informationen. | DevOps |
Aufgabe | Beschreibung | Erforderliche 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.
Weitere Informationen finden Sie in der AWS-Dokumentation. | DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie das Projekt. | Führen Sie den | DevOps |
Stellen Sie das Projekt bereit. | Führen Sie den |
Aufgabe | Beschreibung | Erforderliche 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 |
Aufgabe | Beschreibung | Erforderliche 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. 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 | 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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)