

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.

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 AWS CDK-Anwendungen bereit
<a name="deploy"></a>

Eine AWS Cloud Development Kit (AWS CDK) -Bereitstellung ist der Prozess der Bereitstellung Ihrer Infrastruktur auf. AWS

## Wie funktionieren AWS CDK-Bereitstellungen
<a name="deploy-how"></a>

Das AWS CDK nutzt den AWS CloudFormation Dienst zur Durchführung von Bereitstellungen. Vor der Bereitstellung synthetisieren Sie Ihre CDK-Stacks. Dadurch werden eine CloudFormation Vorlage und Bereitstellungsartefakte für jeden CDK-Stack in Ihrer App erstellt. Bereitstellungen werden von einem lokalen Entwicklungscomputer oder von einer *Continuous Integration and Continuous Delivery (CI/CD)* -Umgebung aus initiiert. Während der Bereitstellung werden die Ressourcen auf die Bootstrap-Ressourcen hochgeladen, und die CloudFormation Vorlage wird zur Bereitstellung Ihrer Ressourcen CloudFormation an übermittelt. AWS 

Damit eine Bereitstellung erfolgreich ist, ist Folgendes erforderlich:
+ Das AWS CDK Command Line Interface (AWS CDK CLI) muss mit gültigen Berechtigungen ausgestattet sein.
+ Die AWS Umgebung muss über ein Bootstrapping verfügen.
+ Das AWS CDK muss die Bootstrap-Ressourcen kennen, in die Assets hochgeladen werden sollen.

## Voraussetzungen für CDK-Bereitstellungen
<a name="deploy-prerequisites"></a>

Bevor Sie eine AWS CDK-Anwendung bereitstellen können, müssen Sie die folgenden Schritte ausführen:
+ Konfigurieren Sie Sicherheitsanmeldedaten für die CDK-CLI.
+ Bootstrap für Ihre Umgebung AWS .
+ Konfigurieren Sie eine AWS Umgebung für jeden Ihrer CDK-Stacks.
+ Entwickeln Sie Ihre CDK-App.<a name="deploy-prerequisites-creds"></a>

 **Konfigurieren Sie Sicherheitsanmeldedaten**   
Um die CDK-CLI für die Interaktion zu verwenden AWS, müssen Sie Sicherheitsanmeldedaten auf Ihrem lokalen Computer konfigurieren. Anweisungen finden [Sie unter Sicherheitsanmeldedaten für die AWS CDK-CLI konfigurieren](configure-access.md).<a name="deploy-prerequisites-bootstrap"></a>

 **Bootstrap für Ihre Umgebung AWS **   
Eine Bereitstellung ist immer mit einer oder mehreren AWS [Umgebungen](environments.md) verknüpft. Bevor Sie die Bereitstellung durchführen können, muss die Umgebung zuerst [gebootet werden.](bootstrapping.md) Bootstrapping stellt Ressourcen in Ihrer Umgebung bereit, die das CDK zur Durchführung und Verwaltung von Bereitstellungen verwendet. Zu diesen Ressourcen gehören ein Amazon Simple Storage Service (Amazon S3) -Bucket und ein Amazon Elastic Container Registry (Amazon ECR) -Repository zum Speichern und Verwalten von [Ressourcen](assets.md). Zu diesen Ressourcen gehören auch AWS Identitäts- und Zugriffsmanagement-Rollen (IAM), die zur Bereitstellung von Berechtigungen während der Entwicklung und Bereitstellung verwendet werden.  
Wir empfehlen, dass Sie den Befehl AWS CDK Command Line Interface (AWS CDK CLI) verwenden, um Ihre `cdk bootstrap` Umgebung zu booten. Sie können das Bootstrapping anpassen oder diese Ressourcen bei Bedarf manuell in Ihrer Umgebung erstellen. Anweisungen finden Sie unter [Bootstrap für Ihre Umgebung zur Verwendung mit dem CDK](bootstrapping-env.md). AWS <a name="deploy-prerequisites-env"></a>

 **Umgebungen konfigurieren AWS **   
Jeder CDK-Stack muss einer Umgebung zugeordnet sein, um zu bestimmen, wo der Stack bereitgestellt wird. Anweisungen finden [Sie unter Umgebungen für die Verwendung mit dem AWS CDK konfigurieren](configure-env.md).<a name="deploy-prerequisites-develop"></a>

 **Entwickeln Sie Ihre CDK-App**   
Im Rahmen eines [CDK-Projekts](projects.md) erstellen und entwickeln Sie Ihre CDK-App. [In deiner App erstellst du einen oder mehrere CDK-Stacks.](stacks.md) In Ihren Stacks importieren und verwenden Sie [Konstrukte aus der Construct-Bibliothek](constructs.md), um Ihre AWS Infrastruktur zu definieren. Bevor Sie sie bereitstellen können, muss Ihre CDK-App mindestens einen Stack enthalten.

## CDK-App-Synthese
<a name="deploy-how-synth"></a>

Für die Synthese empfehlen wir, den `cdk synth` CDK-CLI-Befehl zu verwenden. Der `cdk deploy` Befehl führt auch eine Synthese durch, bevor die Bereitstellung initiiert wird. Mit der Verwendung `cdk synth` können Sie Ihre CDK-App jedoch validieren und Fehler catch bevor Sie mit der Bereitstellung beginnen.

Das Syntheseverhalten wird durch den [Stack-Synthesizer](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html#stack-synthesizers) bestimmt, den Sie für Ihren CDK-Stack konfigurieren. Wenn Sie keinen Synthesizer konfigurieren, ` [DefaultStackSynthesizer](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html) ` wird dieser verwendet. Sie können die Synthese auch konfigurieren und an Ihre Bedürfnisse anpassen. Anweisungen finden [Sie unter CDK-Stack-Synthese konfigurieren und durchführen](configure-synth.md).

Damit Ihre synthetisierte CloudFormation Vorlage erfolgreich in Ihrer Umgebung bereitgestellt werden kann, muss sie mit dem Bootstrapping Ihrer Umgebung kompatibel sein. In Ihrer CloudFormation Vorlage muss beispielsweise der richtige Amazon S3 S3-Bucket angegeben werden, in dem Ressourcen bereitgestellt werden sollen. Wenn Sie die Standardmethode für das Bootstrapping Ihrer Umgebung verwenden, funktioniert der Standard-Stack-Synthesizer. Wenn Sie das CDK-Verhalten anpassen, z. B. Bootstrapping oder Synthese, kann das CDK-Bereitstellungsverhalten variieren.<a name="deploy-how-synth-app"></a>

 **Der App-Lebenszyklus**   
Wenn Sie die Synthese durchführen, durchläuft Ihre CDK-App die folgenden Phasen, die als *App-Lebenszyklus* bezeichnet werden:    
 **Konstruktion (oder Initialisierung)**   
Ihr Code instanziiert alle definierten Konstrukte und verknüpft sie dann miteinander. In dieser Phase werden alle Konstrukte (App, Stacks und ihre untergeordneten Konstrukte) instanziiert und die Konstruktorkette ausgeführt. Der größte Teil Ihres App-Codes wird in dieser Phase ausgeführt.  
 **Vorbereitung**   
Alle Konstrukte, die die `prepare` Methode implementiert haben, werden einer letzten Änderungsrunde unterzogen, um ihren endgültigen Zustand festzulegen. Die Vorbereitungsphase erfolgt automatisch. Als Benutzer erhalten Sie kein Feedback aus dieser Phase. Es kommt selten vor, dass der Hook „Prepare“ verwendet werden muss, und wird generell nicht empfohlen. Seien Sie in dieser Phase sehr vorsichtig, wenn Sie den Konstruktionsbaum mutieren, da die Reihenfolge der Operationen das Verhalten beeinflussen könnte.  
Während dieser Phase, sobald der Konstruktionsbaum erstellt wurde, werden alle [Aspekte](aspects.md), die Sie konfiguriert haben, ebenfalls angewendet.  
 **Validierung**   
Alle Konstrukte, die die `validate` Methode implementiert haben, können sich selbst validieren, um sicherzustellen, dass sie sich in einem Zustand befinden, der korrekt bereitgestellt werden kann. Sie werden über alle Validierungsfehler informiert, die während dieser Phase auftreten. Im Allgemeinen empfehlen wir, die Validierung so schnell wie möglich durchzuführen (normalerweise, sobald Sie Eingaben erhalten) und so früh wie möglich Ausnahmen auszulösen. Eine frühzeitige Validierung erhöht die Zuverlässigkeit, da Stack-Traces genauer sind, und stellt sicher, dass Ihr Code weiterhin sicher ausgeführt werden kann.  
 **Synthese**   
Dies ist die letzte Phase der Ausführung Ihrer CDK-App. Es wird durch einen Aufruf von ausgelöst`app.synth()`, durchquert den Konstruktbaum und ruft die `synthesize` Methode für alle Konstrukte auf. Implementierte Konstrukte `synthesize` können an der Synthese teilnehmen und Bereitstellungsartefakte für die resultierende Cloud-Assembly erzeugen. Zu diesen Artefakten gehören CloudFormation Vorlagen, AWS Lambda-Anwendungspakete, Datei- und Docker-Image-Assets und andere Bereitstellungsartefakte. In den meisten Fällen müssen Sie die Methode nicht implementieren. `synthesize`<a name="deploy-how-synth-run"></a>

 **Ihre App ausführen**   
Die CDK-CLI muss wissen, wie Sie Ihre CDK-App ausführen. Wenn Sie das Projekt mithilfe des `cdk init` Befehls aus einer Vorlage erstellt haben, enthält die `cdk.json` Datei Ihrer App einen `app` Schlüssel. Dieser Schlüssel gibt den erforderlichen Befehl für die Sprache an, in der die App geschrieben ist. Wenn für Ihre Sprache eine Kompilierung erforderlich ist, führt die Befehlszeile diesen Schritt aus, bevor die App automatisch ausgeführt wird.  

**Example**  

```
{
  "app": "npx ts-node --prefer-ts-exts bin/my-app.ts"
}
```

```
{
  "app": "node bin/my-app.js"
}
```

```
{
    "app": "python app.py"
}
```

```
{
  "app": "mvn -e -q compile exec:java"
}
```

```
{
  "app": "dotnet run -p src/MyApp/MyApp.csproj"
}
```

```
{
  "app": "go mod download && go run my-app.go"
}
```
Wenn Sie Ihr Projekt nicht mit der CDK-CLI erstellt haben oder wenn Sie die unter angegebene Befehlszeile überschreiben möchten`cdk.json`, können Sie die ` --app ` Option bei der Ausführung des `cdk` Befehls angeben.

```
$ cdk --app '<executable>' <cdk-command> ...
```

Der `<executable>` Teil des Befehls gibt den Befehl an, der ausgeführt werden sollte, um Ihre CDK-Anwendung auszuführen. Verwenden Sie Anführungszeichen wie in der Abbildung gezeigt, da solche Befehle Leerzeichen enthalten. Das `<cdk-command>` ist ein Unterbefehl wie `synth` oder`deploy`, der der CDK-CLI mitteilt, was Sie mit Ihrer App machen möchten. Folgen Sie dem mit allen zusätzlichen Optionen, die für diesen Unterbefehl benötigt werden.

Die CDK-CLI kann auch direkt mit einer bereits synthetisierten Cloud-Assembly interagieren. Übergeben Sie dazu das Verzeichnis, in dem die Cloud-Assembly gespeichert ist. `--app` Das folgende Beispiel listet die Stacks auf, die in der Cloud-Assembly definiert sind, die unter `./my-cloud-assembly` gespeichert ist.

```
$ cdk --app <./my-cloud-assembly> ls
```<a name="deploy-how-synth-assemblies"></a>

 **Cloud-Assemblys**   
Der Call to weist `app.synth()` das AWS CDK an, eine Cloud-Assembly aus einer App zu synthetisieren. Normalerweise interagieren Sie nicht direkt mit Cloud-Assemblys. Es handelt sich um Dateien, die alles enthalten, was für die Bereitstellung Ihrer App in einer Cloud-Umgebung erforderlich ist. Es enthält beispielsweise eine AWS CloudFormation Vorlage für jeden Stapel in Ihrer App. Es enthält auch eine Kopie aller Datei-Assets oder Docker-Images, auf die Sie in Ihrer App verweisen.  
Einzelheiten zur Formatierung von [Cloud-Assemblys finden Sie in der Cloud-Assembly-Spezifikation](https://github.com/aws/aws-cdk-cli/blob/main/packages/%40aws-cdk/cloud-assembly-schema/README.md).  
Um mit der Cloud-Assembly zu interagieren, die Ihre AWS CDK-App erstellt, verwenden Sie normalerweise die AWS CDK-CLI. Für die Bereitstellung Ihrer App kann jedoch jedes Tool verwendet werden, das das Cloud-Assembly-Format lesen kann.

## Bereitstellen der Anwendung
<a name="deploy-how-deploy"></a>

Um Ihre Anwendung bereitzustellen, empfehlen wir, den `cdk deploy` CDK-CLI-Befehl zu verwenden, um Bereitstellungen zu initiieren oder automatisierte Bereitstellungen zu konfigurieren.

Bei der Ausführung wird `cdk deploy` die CDK-CLI initiiert`cdk synth`, um die Bereitstellung vorzubereiten. Das folgende Diagramm veranschaulicht den Lebenszyklus einer App im Kontext einer Bereitstellung:

![Flussdiagramm des <shared id="AWS"/> CDK-App-Lebenszyklus.](http://docs.aws.amazon.com/de_de/cdk/v2/guide/images/app-lifecycle_cdk-flowchart.png)


Während der Bereitstellung nimmt die CDK-CLI die durch Synthese erzeugte Cloud-Assembly und stellt sie in einer AWS Umgebung bereit. Die Ressourcen werden auf Amazon S3 und Amazon ECR hochgeladen und die CloudFormation Vorlage wird AWS CloudFormation zur Bereitstellung eingereicht.

Zu Beginn der AWS CloudFormation Bereitstellungsphase ist Ihre CDK-App bereits fertig ausgeführt und wurde beendet. Dies hat folgende Auswirkungen:
+ Die CDK-App kann nicht auf Ereignisse reagieren, die während der Bereitstellung auftreten, z. B. auf die Erstellung einer Ressource oder den Abschluss der gesamten Bereitstellung. Um Code während der Bereitstellungsphase auszuführen, müssen Sie ihn als [benutzerdefinierte](cfn-layer.md#develop-customize-custom) Ressource in die AWS CloudFormation Vorlage einfügen. Weitere Informationen zum Hinzufügen einer benutzerdefinierten Ressource zu Ihrer App finden Sie im [AWS CloudFormation Modul oder im Beispiel](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudformation-readme.html) für eine [benutzerdefinierte Ressource](https://github.com/aws-samples/aws-cdk-examples/tree/master/typescript/custom-resource/). Sie können das [Triggers-Modul](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.triggers-readme.html) auch so konfigurieren, dass Code während der Bereitstellung ausgeführt wird.
+ Die CDK-App muss möglicherweise mit Werten arbeiten, die zum Zeitpunkt der Ausführung noch nicht bekannt sind. Wenn die AWS CDK-App beispielsweise einen Amazon S3 S3-Bucket mit einem automatisch generierten Namen definiert und Sie das `bucket.bucketName` (Python:`bucket_name`) -Attribut abrufen, ist dieser Wert nicht der Name des bereitgestellten Buckets. Stattdessen erhalten Sie einen `Token` Wert. Um festzustellen, ob ein bestimmter Wert verfügbar ist, rufen Sie `cdk.isUnresolved(value)` (Python:`is_unresolved`) auf. Einzelheiten finden Sie unter [Tokens und AWS CDK](tokens.md).<a name="deploy-how-deploy-permissions"></a>

 **Bereitstellungsberechtigungen**   
Bevor die Bereitstellung durchgeführt werden kann, müssen Berechtigungen eingerichtet werden. Das folgende Diagramm zeigt die Berechtigungen, die während einer Standardbereitstellung verwendet werden, wenn der Standard-Bootstrapping-Prozess und der Stack-Synthesizer verwendet werden:  

![Flussdiagramm des standardmäßigen <shared id="AWS"/> CDK-Bereitstellungsprozesses.](http://docs.aws.amazon.com/de_de/cdk/v2/guide/images/default-deploy-process_cdk_flowchart.png)
  
 **Der Akteur initiiert die Bereitstellung**   
Bereitstellungen werden von einem *Akteur* mithilfe der CDK-CLI initiiert. Ein Akteur kann entweder eine Person oder ein Dienst wie sein. AWS CodePipeline  
Falls erforderlich, wird die CDK-CLI ausgeführt, `cdk synth` wenn Sie sie ausführen`cdk deploy`. Während der Synthese geht die AWS Identität davon aus, dass `LookupRole` sie Kontext-Lookups in der AWS Umgebung durchführt.  
 **Die Berechtigungen sind eingerichtet**   
Zunächst werden die Sicherheitsanmeldedaten des Akteurs verwendet, um sich bei der ersten IAM-Identität zu authentifizieren AWS und diese zu erhalten. Wie Sicherheitsnachweise konfiguriert und abgerufen werden, hängt für menschliche Akteure davon ab, wie Sie oder Ihr Unternehmen Benutzer verwalten. Weitere Informationen finden [Sie unter Sicherheitsanmeldedaten für die AWS CDK-CLI konfigurieren](configure-access.md). Für Dienstakteure wird z. CodePipeline B. eine IAM-Ausführungsrolle übernommen und verwendet.  
Als Nächstes werden die beim Bootstrapping in Ihrer AWS Umgebung erstellten IAM-Rollen verwendet, um Berechtigungen für die Durchführung der für die Bereitstellung erforderlichen Aktionen einzurichten. Weitere Informationen zu diesen Rollen und dazu, wofür sie Berechtigungen gewähren, finden Sie unter Beim Bootstrapping erstellte [IAM-Rollen](bootstrapping-env.md#bootstrapping-env-roles). Dieser Prozess umfasst Folgendes:  
+ Die AWS Identität übernimmt die `DeploymentActionRole` Rolle und gibt die `CloudFormationExecutionRole` Rolle an sie weiter. Dabei wird sichergestellt CloudFormation, dass sie die Rolle CloudFormation übernimmt, wenn sie Aktionen in Ihrer AWS Umgebung ausführt. `DeploymentActionRole`erteilt die Erlaubnis zur Durchführung von Bereitstellungen in Ihrer Umgebung und `CloudFormationExecutionRole` legt fest, welche Aktionen ausgeführt CloudFormation werden können.
+ Die AWS Identität nimmt die an`FilePublishingRole`, die bestimmt, welche Aktionen auf dem Amazon S3 S3-Bucket ausgeführt werden können, der beim Bootstrapping erstellt wurde.
+ Die AWS Identität nimmt die an`ImagePublishingRole`, die bestimmt, welche Aktionen auf dem Amazon ECR-Repository ausgeführt werden können, das beim Bootstrapping erstellt wurde.
+ Falls erforderlich, geht die AWS Identität davon aus, dass `LookupRole` sie Kontext-Lookups in der Umgebung durchführt. AWS Diese Aktion kann auch während der Template-Synthese durchgeführt werden.  
 **Die Bereitstellung wird durchgeführt**   
Während der Bereitstellung liest die CDK-CLI den Bootstrap-Versionsparameter, um die Bootstrap-Versionsnummer zu bestätigen. AWS CloudFormation liest diesen Parameter zur Bestätigung auch bei der Bereitstellung. Wenn die Berechtigungen für den gesamten Bereitstellungs-Workflow gültig sind, wird die Bereitstellung durchgeführt. Die Ressourcen werden auf die Bootstrap-Ressourcen hochgeladen, und die bei der Synthese erstellte CloudFormation Vorlage wird bereitgestellt, wobei der CloudFormation Service als CloudFormation Stack für die Bereitstellung Ihrer Ressourcen verwendet wird.