

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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript"></a>

*Dr. Rahul Sharad Gaikwad, Amazon Web Services*

## Zusammenfassung
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-summary"></a>

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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-prereqs"></a>

**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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html).

**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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-architecture"></a>

**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.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/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.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)


 

## Tools
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-tools"></a>

**Tools**
+ Die [AWS Amplify Console](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) 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](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 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)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) 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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 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](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) 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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) ist ein vollständig verwalteter Service für die Bereitstellung von [Echtzeit-Streaming-Daten](https://aws.amazon.com/streaming-data/) 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](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) ist ein Service zum Sammeln und Verarbeiten großer Datenströme in Echtzeit.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-epics"></a>

### Installieren Sie das AWS CDK Toolkit
<a name="install-aws-cdk-toolkit"></a>


| Aufgabe | Description | Erforderliche 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 | 

### AWS-Anmeldeinformationen einrichten
<a name="set-up-aws-credentials"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie Anmeldeinformationen ein. | Um Anmeldeinformationen einzurichten, führen Sie den `aws configure` Befehl aus und folgen Sie den Anweisungen.<pre>$aws configure<br />AWS Access Key ID [None]: <br />AWS Secret Access Key [None]: your_secret_access_key<br />Default region name [None]:<br />Default output format [None]:</pre> | DevOps | 

### Laden Sie den Projektcode herunter
<a name="download-the-project-code"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie den beigefügten Projektcode herunter. | Weitere Informationen zur Verzeichnis- und Dateistruktur finden Sie im Abschnitt *Zusätzliche Informationen*. | DevOps | 

### Bootstrap für die AWS-CDK-Umgebung
<a name="bootstrap-the-aws-cdk-environment"></a>


| Aufgabe | Description | 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.`cdk bootstrap <account>/<Region>`Weitere Informationen finden Sie in der [AWS-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | DevOps | 

### Erstellen und implementieren Sie das Projekt
<a name="build-and-deploy-the-project"></a>


| Aufgabe | Description | Erforderliche 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. |  | 

### Überprüfen Sie die Ausgaben
<a name="verify-outputs"></a>


| Aufgabe | Description | 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 | 

### Testen der Anwendung
<a name="test-the-application"></a>


| Aufgabe | Description | 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](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html). | 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.](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html) 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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-resources"></a>

**Referenzen**
+ [AWS-Cloud-Entwicklungskit](https://aws.amazon.com/cdk/)
+ [AWS CDK auf GitHub](https://github.com/aws/aws-cdk)
+ [Arbeiten mit verschachtelten Stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)
+ [AWS-Beispielbeispiel — Serverlose Echtzeitanalysen](https://github.com/aws-samples/serverless-realtime-analytics)

## Zusätzliche Informationen
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-additional"></a>

**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.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)


 

## Anlagen
<a name="attachments-0ac29a11-1362-4084-92ed-6b85205763ca"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/0ac29a11-1362-4084-92ed-6b85205763ca/attachments/attachment.zip)