

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet 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.

# Bootstrap deine Umgebung für die Verwendung mit dem CDK AWS
<a name="bootstrapping-env"></a>

Führen Sie ein Bootstrapping für Ihre AWS Umgebung durch, um sie für Stack-Bereitstellungen mit dem AWS Cloud Development Kit (AWS CDK) vorzubereiten.
+ Eine Einführung in Umgebungen finden Sie unter [Umgebungen für](environments.md) das CDK. AWS 
+ [Eine Einführung in Bootstrapping finden Sie unter AWS CDK-Bootstrapping.](bootstrapping.md)

## Wie startest du deine Umgebung
<a name="bootstrapping-howto"></a>

Sie können das AWS CDK Command Line Interface (AWS CDK CLI) oder Ihr bevorzugtes AWS CloudFormation Bereitstellungstool verwenden, um Ihre Umgebung zu booten.<a name="bootstrapping-howto-cli"></a>

 **Verwenden Sie die CDK-CLI**   
Sie können den `cdk bootstrap` CDK-CLI-Befehl verwenden, um Ihre Umgebung zu booten. Diese Methode empfehlen wir, wenn Sie keine wesentlichen Änderungen am Bootstrapping benötigen.    
 **Bootstrap aus einem beliebigen Arbeitsverzeichnis**   
Um von einem beliebigen Arbeitsverzeichnis aus zu booten, geben Sie die Umgebung für das Bootstrapping als Befehlszeilenargument an. Im Folgenden wird ein Beispiel gezeigt:  

```
$ cdk bootstrap <aws://123456789012/us-east-1>
```
Wenn Sie Ihre AWS Kontonummer nicht haben, können Sie sie in der AWS Management Console abrufen. Sie können auch den folgenden AWS CLI-Befehl verwenden, um Ihre Standardkontoinformationen, einschließlich Ihrer Kontonummer, anzuzeigen:  

```
$ aws sts get-caller-identity
```
Wenn Sie Profile in Ihren AWS `config` und `credentials` -Dateien benannt haben, verwenden Sie die `--profile` Option, um Kontoinformationen für ein bestimmtes Profil abzurufen. Im Folgenden wird ein Beispiel gezeigt:  

```
$ aws sts get-caller-identity --profile <prod>
```
Verwenden Sie den `aws configure get` folgenden Befehl, um die Standardregion anzuzeigen:  

```
$ aws configure get region
$ aws configure get region --profile <prod>
```
Bei der Angabe eines Arguments ist das `aws://` Präfix optional. Folgendes ist gültig:  

```
$ cdk bootstrap <123456789012/us-east-1>
```
Um mehrere Umgebungen gleichzeitig zu booten, geben Sie mehrere Argumente an:  

```
$ cdk bootstrap <aws://123456789012/us-east-1> <aws://123456789012/us-east-2>
```  
 **Bootstrap aus dem übergeordneten Verzeichnis eines CDK-Projekts**   
Sie können `cdk bootstrap` vom übergeordneten Verzeichnis eines CDK-Projekts aus starten, das eine Datei enthält. `cdk.json` Wenn Sie keine Umgebung als Argument angeben, ruft die CDK-CLI Umgebungsinformationen aus Standardquellen ab, z. B. aus Ihren `config` `credentials` AND-Dateien oder beliebigen Umgebungsinformationen, die für Ihren CDK-Stack angegeben sind.  
Wenn Sie vom übergeordneten Verzeichnis eines CDK-Projekts aus booten, haben Umgebungen, die über Befehlszeilenargumente bereitgestellt werden, Vorrang vor anderen Quellen.  
Um eine Umgebung zu booten, die in Ihren `credentials` Dateien `config` und angegeben ist, verwenden Sie die Option: `--profile`  

```
$ cdk bootstrap --profile <prod>
```
Weitere Informationen zum `cdk bootstrap` Befehl und den unterstützten Optionen finden Sie unter [cdk](ref-cli-cmd-bootstrap.md) bootstrap.<a name="bootstrapping-howto-cfn"></a>

 **Verwenden Sie ein beliebiges Tool AWS CloudFormation **   
Sie können die [Bootstrap-Vorlage](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml) aus dem *aws-cdk-cli GitHub Repository* kopieren oder die Vorlage mit dem `cdk bootstrap --show-template` Befehl abrufen. Verwenden Sie dann AWS CloudFormation ein beliebiges Tool, um die Vorlage in Ihrer Umgebung bereitzustellen.  
Mit dieser Methode können Sie unseren AWS Control Tower verwenden AWS CloudFormation StackSets . Sie können auch die AWS CloudFormation Konsole oder die AWS Befehlszeilenschnittstelle (AWS CLI) verwenden. Sie können Änderungen an Ihrer Vorlage vornehmen, bevor Sie sie bereitstellen. Diese Methode ist möglicherweise flexibler und eignet sich für umfangreiche Bereitstellungen.  
Im Folgenden finden Sie ein Beispiel für die Verwendung der `--show-template` Option zum Abrufen und Speichern der Bootstrap-Vorlage auf Ihrem lokalen Computer:  

**Example**  

```
$ cdk bootstrap --show-template > bootstrap-template.yaml
```
 PowerShell Muss unter Windows verwendet werden, um die Kodierung der Vorlage beizubehalten.  

```
powershell "cdk bootstrap --show-template | Out-File -encoding utf8 bootstrap-template.yaml"
```
Wenn CDK-Hinweise in Ihrer AWS CloudFormation Vorlagenausgabe erscheinen, geben Sie die `--no-notices` Option zusammen mit Ihrem Befehl an.
Um diese Vorlage mit der CDK-CLI bereitzustellen, können Sie Folgendes ausführen:  

```
$ cdk bootstrap --template <bootstrap-template.yaml>
```
Im Folgenden finden Sie ein Beispiel für die Verwendung der AWS CLI zur Bereitstellung der Vorlage:  

**Example**  

```
aws cloudformation create-stack \
  --stack-name CDKToolkit \
  --template-body file://<path/to/>bootstrap-template.yaml \
  --capabilities CAPABILITY_NAMED_IAM \
  --region <us-west-1>
```

```
aws cloudformation create-stack ^
  --stack-name CDKToolkit ^
  --template-body file://<path/to/>bootstrap-template.yaml ^
  --capabilities CAPABILITY_NAMED_IAM ^
  --region <us-west-1>
```
Informationen zum Bootstrapping mehrerer Umgebungen finden Sie unter [Bootstrapping mehrerer AWS Konten für AWS CDK-Nutzung CloudFormation StackSets](https://aws.amazon.com/blogs/mt/bootstrapping-multiple-aws-accounts-for-aws-cdk-using-cloudformation-stacksets/) im * AWS Cloud Operations* & Migrations-Blog. CloudFormation StackSets 

## Wann sollten Sie Ihre Umgebung booten
<a name="bootstrapping-env-when"></a>

Sie müssen jede AWS Umgebung bootstrappen, bevor Sie sie in der Umgebung bereitstellen. Wir empfehlen, dass Sie für jede Umgebung, die Sie verwenden möchten, proaktiv ein Bootstrapping durchführen. Sie können dies tun, bevor Sie planen, CDK-Apps tatsächlich in der Umgebung bereitzustellen. Durch proaktives Bootstrapping Ihrer Umgebungen verhindern Sie potenzielle future Probleme wie Namenskonflikte Amazon S3 S3-Buckets oder die Bereitstellung von CDK-Apps in Umgebungen, die noch nicht gebootet wurden.

Es ist in Ordnung, eine Umgebung mehr als einmal zu booten. Wenn für eine Umgebung bereits ein Bootstrapping durchgeführt wurde, wird der Bootstrap-Stack bei Bedarf aktualisiert. Andernfalls wird nichts passieren.

Wenn Sie versuchen, einen CDK-Stack in einer Umgebung bereitzustellen, für die kein Bootstrapping durchgeführt wurde, wird ein Fehler wie der folgende angezeigt:

```
$ cdk deploy

✨  Synthesis time: 2.02s

 ❌ Deployment failed: Error: BootstrapExampleStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
```<a name="bootstrapping-env-when-update"></a>

 **Aktualisieren Sie Ihren Bootstrap-Stack**   
In regelmäßigen Abständen aktualisiert das CDK-Team die Bootstrap-Vorlage auf eine neue Version. In diesem Fall empfehlen wir Ihnen, Ihren Bootstrap-Stack zu aktualisieren. Wenn Sie den Bootstrapping-Prozess nicht angepasst haben, können Sie Ihren Bootstrap-Stack aktualisieren, indem Sie dieselben Schritte ausführen, die Sie beim ursprünglichen Bootstrapping Ihrer Umgebung unternommen haben. Weitere Informationen finden Sie unter Versionsverlauf der [Bootstrap-Vorlage](#bootstrap-template-history).

## Beim Bootstrapping erstellte Standardressourcen
<a name="bootstrapping-env-default"></a><a name="bootstrapping-env-roles"></a>

 **Beim Bootstrapping erstellte IAM-Rollen**   
Standardmäßig stellt Bootstrapping die folgenden AWS Identitäts- und Zugriffsmanagement-Rollen (IAM) in Ihrer Umgebung bereit:  
+  `CloudFormationExecutionRole` 
+  `DeploymentActionRole` 
+  `FilePublishingRole` 
+  `ImagePublishingRole` 
+  `LookupRole` <a name="bootstrapping-env-roles-cfn"></a>  
 `CloudFormationExecutionRole`   
Diese IAM-Rolle ist eine CloudFormation Servicerolle, die die CloudFormation Erlaubnis erteilt, Stack-Bereitstellungen in Ihrem Namen durchzuführen. Diese Rolle erteilt die CloudFormation Erlaubnis, AWS API-Aufrufe in Ihrem Konto durchzuführen, einschließlich der Bereitstellung von Stacks.  
Wenn Sie eine Servicerolle verwenden, bestimmen die für die Servicerolle bereitgestellten Berechtigungen, welche Aktionen mit Ihren CloudFormation Ressourcen ausgeführt werden können. Ohne diese Servicerolle würden die Sicherheitsanmeldedaten, die Sie mit der CDK-CLI angeben, bestimmen, CloudFormation was getan werden darf.  
 `DeploymentActionRole`   
Diese IAM-Rolle erteilt die Erlaubnis, Bereitstellungen in Ihrer Umgebung durchzuführen. Es wird von der CDK-CLI bei Bereitstellungen angenommen.  
Durch die Verwendung einer Rolle für Bereitstellungen können Sie kontoübergreifende Bereitstellungen durchführen, da die Rolle von AWS Identitäten in einem anderen Konto übernommen werden kann.  
 `FilePublishingRole`   
Diese IAM-Rolle erteilt die Berechtigung, Aktionen für den Amazon Simple Storage Service (Amazon S3) -Bucket durchzuführen, einschließlich des Hochladens und Löschens von Assets. Es wird von der CDK-CLI bei Bereitstellungen angenommen.  
 `ImagePublishingRole`   
Diese IAM-Rolle erteilt die Berechtigung, Aktionen gegen das Bootstrap-Repository der Amazon Elastic Container Registry (Amazon ECR) durchzuführen. Es wird von der CDK-CLI bei Bereitstellungen angenommen.  
 `LookupRole`   
Diese IAM-Rolle gewährt die `readOnly` Berechtigung, nach [Kontextwerten aus der Umgebung](context.md) zu suchen. AWS Es wird von der CDK-CLI bei der Ausführung von Aufgaben wie Template-Synthese und Deployments übernommen.<a name="bootstrapping-env-default-id"></a>

 **Ressource, die beim IDs Bootstrapping erstellt wurde**   
Wenn Sie die Standard-Bootstrap-Vorlage bereitstellen, werden physische Ressourcen IDs für Bootstrap mithilfe der folgenden Struktur erstellt:. `cdk-<qualifier>-<description>-<account-ID>-<Region>`  
+  **Qualifier** — Ein aus neun Zeichen bestehender eindeutiger Zeichenfolgenwert von. `hnb659fds` Der tatsächliche Wert hat keine Bedeutung.
+  **Beschreibung** — Eine kurze Beschreibung der Ressource. Beispiel, `container-assets`.
+  **Konto-ID** — Die AWS Konto-ID der Umgebung.
+  **Region** — Die AWS Region der Umgebung.
Im Folgenden finden Sie ein Beispiel für eine physische ID des Amazon S3 S3-Staging-Buckets, der beim Bootstrapping erstellt wurde:. `cdk-hnb659fds-assets-012345678910-us-west-1`

## Berechtigungen, die Sie beim Bootstrapping Ihrer Umgebung verwenden können
<a name="bootstrapping-env-permissions"></a>

Beim Bootstrapping einer AWS Umgebung muss die IAM-Identität, die das Bootstrapping durchführt, mindestens über die folgenden Berechtigungen verfügen:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:*",
                "ecr:*",
                "ssm:*",
                "s3:*",
                "iam:*"
            ],
            "Resource": "*"
        }
    ]
}
```

Im Laufe der Zeit kann sich der Bootstrap-Stack, einschließlich der Ressourcen, die erstellt werden, und der erforderlichen Berechtigungen ändern. Bei future Änderungen müssen Sie möglicherweise die Berechtigungen ändern, die für das Bootstrapping einer Umgebung erforderlich sind.

## Passen Sie das Bootstrapping an
<a name="bootstrapping-env-customize"></a>

Wenn die Standard-Bootstrap-Vorlage nicht Ihren Anforderungen entspricht, können Sie das Bootstrapping von Ressourcen auf folgende Weise an Ihre Umgebung anpassen:
+ Verwenden Sie Befehlszeilenoptionen zusammen mit dem `cdk bootstrap` Befehl — Diese Methode eignet sich am besten für kleine, spezifische Änderungen, die über Befehlszeilenoptionen unterstützt werden.
+ Ändern Sie die Standard-Bootstrap-Vorlage und stellen Sie sie bereit — Diese Methode eignet sich am besten für komplexe Änderungen oder wenn Sie die vollständige Kontrolle über die Konfiguration der beim Bootstrapping bereitgestellten Ressourcen haben möchten.

[Weitere Informationen zum Anpassen von Bootstrapping finden Sie unter CDK-Bootstrapping anpassen. AWS](bootstrapping-customizing.md)

## Bootstrapping mit CDK Pipelines
<a name="bootstrapping-env-pipelines"></a>

Wenn Sie CDK Pipelines für die Bereitstellung in der Umgebung eines anderen Kontos verwenden und eine Meldung wie die folgende erhalten:

```
Policy contains a statement with one or more invalid principals
```

Diese Fehlermeldung bedeutet, dass die entsprechenden IAM-Rollen in der anderen Umgebung nicht vorhanden sind. Die wahrscheinlichste Ursache ist, dass für die Umgebung kein Bootstrapping durchgeführt wurde. Führen Sie ein Bootstrap für die Umgebung durch und versuchen Sie es erneut.<a name="bootstrapping-env-pipelines-protect"></a>

 **Schützen Sie Ihren Bootstrap-Stack vor dem Löschen**   
Wenn ein Bootstrap-Stack gelöscht wird, werden die AWS Ressourcen, die ursprünglich in der Umgebung zur Unterstützung von CDK-Bereitstellungen bereitgestellt wurden, ebenfalls gelöscht. Dies führt dazu, dass die Pipeline nicht mehr funktioniert. In diesem Fall gibt es keine allgemeine Lösung für die Wiederherstellung.  
Nachdem Ihre Umgebung gebootet wurde, sollten Sie den Bootstrap-Stack der Umgebung nicht löschen und neu erstellen. Versuchen Sie stattdessen, den Bootstrap-Stack auf eine neue Version zu aktualisieren, indem Sie den Befehl erneut ausführen. `cdk bootstrap`  
Zum Schutz vor versehentlichem Löschen Ihres Bootstrap-Stacks empfehlen wir Ihnen, die `--termination-protection` Option mit dem `cdk bootstrap` Befehl zum Aktivieren des Kündigungsschutzes bereitzustellen. Sie können den Kündigungsschutz für neue oder bestehende Bootstrap-Stacks aktivieren. Anweisungen zum Aktivieren des Kündigungsschutzes finden Sie unter [Kündigungsschutz für den Bootstrap-Stack aktivieren](bootstrapping-customizing.md#bootstrapping-customizing-cli-protection).

## Versionsverlauf der Bootstrap-Vorlage
<a name="bootstrap-template-history"></a>

Die Bootstrap-Vorlage ist versioniert und entwickelt sich im Laufe der Zeit mit dem CDK selbst weiter. AWS Wenn Sie Ihre eigene Bootstrap-Vorlage bereitstellen, halten Sie sie mit der kanonischen Standardvorlage auf dem neuesten Stand. Sie möchten sicherstellen, dass Ihre Vorlage weiterhin mit allen CDK-Funktionen funktioniert.

**Anmerkung**  
In früheren Versionen der Bootstrap-Vorlage wurde standardmäßig in jeder Bootstrap-Umgebung ein AWS KMS-Schlüssel erstellt. Um Gebühren für den KMS-Schlüssel zu vermeiden, starten Sie diese Umgebungen mithilfe von neu. `--no-bootstrap-customer-key` Die aktuelle Standardeinstellung ist kein KMS-Schlüssel, wodurch diese Gebühren vermieden werden können.

Dieser Abschnitt enthält eine Liste der Änderungen, die in den einzelnen Versionen vorgenommen wurden.


| Vorlagenversion |  AWS CDK-Version | Änderungen | 
| --- | --- | --- | 
|   **1**   |  1.40.0  |  Erste Version der Vorlage mit Bucket, Schlüssel, Repository und Rollen.  | 
|   **2**   |  1.45.0  |  Teilen Sie die Rolle zur Veröffentlichung von Inhalten in separate Rollen für die Veröffentlichung von Dateien und Bildern auf.  | 
|   **3**   |  1.46.0  |  Fügen Sie `FileAssetKeyArn` Export hinzu, um Benutzern von Inhalten Entschlüsselungsberechtigungen hinzufügen zu können.  | 
|   **4**   |  1.61.0  |   AWS KMS-Berechtigungen sind jetzt über Amazon S3 implizit und nicht mehr erforderlich`FileAssetKeyArn`. Fügen Sie den `CdkBootstrapVersion` SSM-Parameter hinzu, damit die Bootstrap-Stack-Version verifiziert werden kann, ohne den Stacknamen zu kennen.  | 
|   **5**   |  1.87.0  |  Die Bereitstellungsrolle kann den SSM-Parameter lesen.  | 
|   **6**   |  1.108.0  |  Fügen Sie die Suchrolle getrennt von der Bereitstellungsrolle hinzu.  | 
|   **6**   |  1.109.0  |  Fügen Sie den Rollen „Bereitstellung“, „Dateiveröffentlichung“ und „Image-Publishing“ ein `aws-cdk:bootstrap-role` Tag hinzu.  | 
|   **7**   |  1.110.0  |  Die Bereitstellungsrolle kann Buckets im Zielkonto nicht mehr direkt lesen. (Bei dieser Rolle handelt es sich jedoch praktisch um eine Administratorrolle und sie könnte ihre AWS CloudFormation Berechtigungen ohnehin nutzen, um den Bucket lesbar zu machen).  | 
|   **8**   |  1.114.0  |  Die Lookup-Rolle hat volle Leseberechtigungen für die Zielumgebung und verfügt auch über ein Tag. `aws-cdk:bootstrap-role`  | 
|   **9**   |  2.1.0  |  Behebt, dass Amazon S3 S3-Asset-Uploads nicht durch häufig referenzierte Verschlüsselungs-SCP abgelehnt werden.  | 
|   **10**   |  2.4.0  |  Amazon ECR ScanOnPush ist jetzt standardmäßig aktiviert.  | 
|   **11**   |  2.18.0  |  Fügt eine Richtlinie hinzu, die es Lambda ermöglicht, Daten aus Amazon ECR-Repos abzurufen, sodass es einen Neustart übersteht.  | 
|   **12**   |  2.20.0  |  Fügt Unterstützung für experimentelle Anwendungen hinzu`cdk import`.  | 
|   **13**   |  2.25.0  |  Macht Container-Images in von Bootstrap erstellten Amazon ECR-Repositorys unveränderlich.  | 
|   **14**   |  2.34.0  |  Deaktiviert standardmäßig das Amazon ECR-Bildscannen auf Repository-Ebene, um das Bootstrapping von Regionen zu ermöglichen, die das Scannen von Bildern nicht unterstützen.  | 
|   **15**   |  2,60,0  |  KMS-Schlüssel können nicht markiert werden.  | 
|   **16**   |  2,69,0  |  Behebt die Suche nach [KMS.2](https://docs.aws.amazon.com/securityhub/latest/userguide/kms-controls.html#kms-2) durch Security Hub.  | 
|   **17**   |  2,72,0  |  Behebt den Security Hub Hub-Befund [ECR.3.](https://docs.aws.amazon.com/securityhub/latest/userguide/ecr-controls.html#ecr-3)  | 
|   **18**   |  2,80,0  |  Die für Version 16 vorgenommenen Änderungen wurden rückgängig gemacht, da sie nicht in allen Partitionen funktionieren und daher nicht empfohlen werden.  | 
|   **19**   |  2,106,1  |  Die an Version 18 vorgenommenen Änderungen, bei denen die AccessControl Eigenschaft aus der Vorlage entfernt wurde, wurden rückgängig gemacht. ([\$127964](https://github.com/aws/aws-cdk/issues/27964))  | 
|   **20**   |  2,119,0  |  Fügen Sie der Rolle „ AWS CloudFormation IAM-Bereitstellung“ eine `ssm:GetParameters` Aktion hinzu. Weitere Informationen finden Sie unter [\$128336](https://github.com/aws/aws-cdk/pull/28336/files#diff-4fdac38426c4747aa17d515b01af4994d3d2f12c34f7b6655f24328259beb7bf).  | 
|   **21**   |  2,149,0  |  Fügt der Rolle zur Dateiveröffentlichung eine Bedingung hinzu.  | 
|   **22**   |  2,160,0  |  Fügen Sie der Vertrauensrichtlinie von Bootstrap-IAM-Rollen `sts:TagSession` Berechtigungen hinzu.  | 
|   **23**   |  2,161,0  |  Fügen Sie `cloudformation:RollbackStack` der Vertrauensrichtlinie der Rolle Deploy IAM weitere `cloudformation:ContinueUpdateRollback` Berechtigungen hinzu. Dadurch werden Berechtigungen für den `cdk rollback` Befehl bereitgestellt.  | 
|   **24**   |  2.165.0  |  Ändern Sie die Dauer der Tage, an denen veraltete Objekte im Bootstrap-Bucket aufbewahrt werden, von 365 auf 30 Tage. Da mit dem neuen `cdk gc` Befehl die Möglichkeit eingeführt wird, Objekte im Bootstrap-Bucket zu löschen, wird durch dieses neue Verhalten sichergestellt, dass gelöschte Objekte 30 Tage statt 365 Tage im Bootstrap-Bucket verbleiben. [Weitere Informationen zu dieser Änderung finden Sie unter `aws-cdk` PR \$131949.](https://github.com/aws/aws-cdk/pull/31949)  | 
|   **25**   |  2,165,0  |  Fügt dem Bootstrap-Bucket Unterstützung für das Entfernen unvollständiger mehrteiliger Uploads hinzu. Unvollständige mehrteilige Uploads werden nach einem Tag gelöscht. [Weitere Informationen zu dieser Änderung finden Sie unter `aws-cdk` PR \$131956.](https://github.com/aws/aws-cdk/pull/31956)  | 
|   **26**   |  2,1002,0  |  Fügen Sie der Ressource zwei Richtlinien für das Löschen (`UpdateReplacePolicy`und) `DeletionPolicy` hinzu. `FileAssetsBucketEncryptionKey` Diese Richtlinien stellen sicher, dass die alte AWS KMS-Schlüsselressource ordnungsgemäß gelöscht wird, wenn der Bootstrap-Stack aktualisiert oder gelöscht wird. Weitere Informationen zu dieser Änderung finden Sie unter `aws-cdk-cli` PR [\$1100](https://github.com/aws/aws-cdk-cli/pull/100).  | 
|   **27**   |  2.1003,0  |  Fügen Sie eine neue Amazon ECR-Ressourcenrichtlinie hinzu, um Amazon EMR Serverless spezifische Berechtigungen für das Abrufen von Container-Images zu gewähren. [Weitere Informationen zu dieser Änderung finden Sie unter PR \$1112. `aws-cdk-cli`](https://github.com/aws/aws-cdk-cli/pull/112)  | 
|   **28**   |  2,1015,0  |  Fügen Sie der Deployment-Rolle Berechtigungen zur Durchführung von Stack Refactoring-Aktionen und TagSession Berechtigungen für alle Rollen hinzu. [Weitere Informationen zu dieser Änderung finden Sie unter `aws-cdk-cli` PR \$1471.](https://github.com/aws/aws-cdk-cli/pull/471)  | 
|   **29**   |  2,1026,0  |  Alle AssumeRole Anrufe, die eine angeben, ExternalId werden standardmäßig abgewiesen, sofern sie nicht deaktiviert sind. Weitere Informationen zu dieser Änderung finden Sie unter `aws-cdk-cli` PR [\$1811](https://github.com/aws/aws-cdk-cli/pull/811).  | 
|   **30**   |  2.1034.0  |  Fügen Sie der Bereitstellungsrolle Berechtigungen zur Beschreibung von Stack-Ereignissen hinzu, um Fehler bei der CloudFormation Early-Validation genau anzeigen zu können. Weitere Informationen zu dieser Änderung finden Sie unter `aws-cdk-cli` PR [\$1970](https://github.com/aws/aws-cdk-cli/pull/970).  | 

## Führen Sie ein Upgrade von einer älteren auf eine moderne Bootstrap-Vorlage durch
<a name="bootstrapping-template"></a>

Das AWS CDK v1 unterstützte zwei Bootstrapping-Vorlagen, Legacy und Modern. CDK v2 unterstützt nur das moderne Template. Als Referenz finden Sie hier die wichtigsten Unterschiede zwischen diesen beiden Vorlagen.


| Feature | Legacy (nur Version 1) | Modern (v1 und v2) | 
| --- | --- | --- | 
|   **Kontoübergreifende Bereitstellungen**   |  Nicht zulässig  |  Zulässig  | 
|   ** AWS CloudFormation Berechtigungen**   |  Wird unter Verwendung der Berechtigungen des aktuellen Benutzers bereitgestellt (bestimmt durch AWS Profil, Umgebungsvariablen usw.)  |  Wird mit den Berechtigungen bereitgestellt, die bei der Bereitstellung des Bootstrap-Stacks angegeben wurden (z. B. mithilfe von `--trust`  | 
|   **Versioning**   |  Es ist nur eine Version des Bootstrap-Stacks verfügbar  |  Der Bootstrap-Stack ist versioniert; neue Ressourcen können in future Versionen hinzugefügt werden, und für AWS CDK-Apps kann eine Mindestversion erforderlich sein  | 
|   **Ressourcen\$1**   |  Amazon-S3-Bucket  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/cdk/v2/guide/bootstrapping-env.html)  | 
|   ** AWS KMS-Schlüssel**   |  IAM-Rollen  |  Amazon ECR-Repository  | 
|   **Benennung von Ressourcen**   |  Automatisch generiert  |  Deterministisch  | 
|   **Bucket-Verschlüsselung**   |  Standardschlüssel  |   AWS standardmäßig verwalteter Schlüssel. Sie können die Verwendung eines vom Kunden verwalteten Schlüssels anpassen.  | 
+  *Wir werden der Bootstrap-Vorlage nach Bedarf zusätzliche Ressourcen hinzufügen.* 

Eine Umgebung, für die das Bootstrapping mit dem Legacy-Template durchgeführt wurde, muss durch Re-Bootstrapping aktualisiert werden, sodass sie das moderne Template für CDK v2 verwendet. Stellen Sie alle AWS CDK-Anwendungen in der Umgebung mindestens einmal erneut bereit, bevor Sie den Legacy-Bucket löschen.

## Gehen Sie auf die Ergebnisse von Security Hub ein
<a name="bootstrapping-securityhub"></a>

Wenn Sie AWS Security Hub verwenden, werden Ihnen möglicherweise Ergebnisse zu einigen Ressourcen gemeldet, die durch den AWS CDK-Bootstrapping-Prozess erstellt wurden. Die Ergebnisse von Security Hub helfen Ihnen dabei, Ressourcenkonfigurationen zu finden, die Sie auf Richtigkeit und Sicherheit überprüfen sollten. Wir haben diese spezifischen Ressourcenkonfigurationen mit AWS Security überprüft und sind überzeugt, dass sie kein Sicherheitsproblem darstellen.<a name="bootstrapping-securityhub-kms2"></a>

 **[KMS.2] IAM-Prinzipale sollten keine IAM-Inline-Richtlinien haben, die Entschlüsselungsaktionen für alle KMS-Schlüssel zulassen**   
Die *Bereitstellungsrolle* (`DeploymentActionRole`) gewährt die Berechtigung zum Lesen verschlüsselter Daten, was für kontoübergreifende Bereitstellungen mit CDK Pipelines erforderlich ist. Richtlinien in dieser Rolle gewähren nicht Zugriff auf alle Daten. Es gewährt nur die Erlaubnis, verschlüsselte Daten von Amazon S3 und AWS KMS zu lesen, und nur, wenn diese Ressourcen dies aufgrund ihrer Bucket- oder Schlüsselrichtlinie zulassen.  
Im Folgenden finden Sie einen Auszug dieser beiden Anweisungen in der *Deploy-Rolle* aus der Bootstrap-Vorlage:  

```
DeploymentActionRole:
    Type: AWS::IAM::Role
    Properties:
      ...
      Policies:
        - PolicyDocument:
            Statement:
              ...
              - Sid: PipelineCrossAccountArtifactsBucket
                Effect: Allow
                Action:
                  - s3:GetObject*
                  - s3:GetBucket*
                  - s3:List*
                  - s3:Abort*
                  - s3:DeleteObject*
                  - s3:PutObject*
                Resource: "*"
                Condition:
                  StringNotEquals:
                    s3:ResourceAccount:
                      Ref: AWS::AccountId
              - Sid: PipelineCrossAccountArtifactsKey
                Effect: Allow
                Action:
                  - kms:Decrypt
                  - kms:DescribeKey
                  - kms:Encrypt
                  - kms:ReEncrypt*
                  - kms:GenerateDataKey*
                Resource: "*"
                Condition:
                  StringEquals:
                    kms:ViaService:
                      Fn::Sub: s3.${AWS::Region}.amazonaws.com
              ...
```<a name="bootstrapping-securityhub-kms2-why"></a>  
 **Warum meldet Security Hub das?**   
Die Richtlinien enthalten eine Klausel, die mit einer `Condition` Klausel `Resource: *` kombiniert wird. Security Hub kennzeichnet den `*` Platzhalter. Dieser Platzhalter wird verwendet, weil zum Zeitpunkt des Bootstrappings des Kontos der von CDK Pipelines für den CodePipeline Artefakt-Bucket erstellte AWS KMS-Schlüssel noch nicht existiert und daher nicht von ARN in der Bootstrap-Vorlage referenziert werden kann. Darüber hinaus berücksichtigt Security Hub die `Condition` Klausel nicht, wenn diese Markierung aktiviert wird. Dies `Condition` beschränkt `Resource: *` sich auf Anfragen, die über dasselbe AWS Konto des AWS KMS-Schlüssels gestellt wurden. Diese Anfragen müssen von Amazon S3 in derselben AWS Region wie der AWS KMS-Schlüssel stammen.  
 **Muss ich diesen Befund korrigieren?**   
Solange Sie den AWS KMS-Schlüssel in Ihrer Bootstrap-Vorlage nicht so geändert haben, dass er zu freizügig ist, gewährt die *Bereitstellungsrolle* nicht mehr Zugriff als erforderlich. Daher ist es nicht erforderlich, dieses Ergebnis zu korrigieren.  
 **Was ist, wenn ich diesen Befund korrigieren möchte?**   
Wie Sie dieses Problem beheben, hängt davon ab, ob Sie CDK Pipelines für kontoübergreifende Bereitstellungen verwenden werden oder nicht.    
 **Um das Problem mit dem Security Hub zu beheben und CDK Pipelines für kontoübergreifende Bereitstellungen zu verwenden**   

1. Falls Sie dies noch nicht getan haben, stellen Sie den CDK-Bootstrap-Stack mit dem folgenden Befehl bereit. `cdk bootstrap`

1. Falls Sie dies noch nicht getan haben, erstellen Sie Ihr CDK und stellen Sie es bereit. Pipeline Anweisungen finden Sie unter [Kontinuierliche Integration und Bereitstellung (CI/CD) mithilfe von CDK](cdk-pipeline.md) Pipelines.

1. Besorgen Sie sich den AWS KMS-Schlüssel-ARN des CodePipeline Artefakt-Buckets. Diese Ressource wird während der Pipelineerstellung erstellt.

1. Besorgen Sie sich eine Kopie der CDK-Bootstrap-Vorlage, um sie zu ändern. Im Folgenden finden Sie ein Beispiel mit der AWS CDK-CLI:

   ```
   $ cdk bootstrap --show-template > bootstrap-template.yaml
   ```

1. Ändern Sie die Vorlage, indem Sie `Resource: *` die `PipelineCrossAccountArtifactsKey` Anweisung durch Ihren ARN-Wert ersetzen.

1. Stellen Sie die Vorlage bereit, um Ihren Bootstrap-Stack zu aktualisieren. Im Folgenden finden Sie ein Beispiel mit der CDK-CLI:

   ```
   $ cdk bootstrap aws://<account-id>/<region> --template bootstrap-template.yaml
   ```  
 **Um das Security Hub Hub-Problem zu beheben, wenn Sie keine CDK Pipelines für kontoübergreifende Bereitstellungen verwenden**   

1. Besorgen Sie sich eine Kopie der CDK-Bootstrap-Vorlage, um sie zu ändern. Im Folgenden finden Sie ein Beispiel mit der CDK-CLI:

   ```
   $ cdk bootstrap --show-template > bootstrap-template.yaml
   ```

1. Löschen Sie die `PipelineCrossAccountArtifactsKey` Anweisungen `PipelineCrossAccountArtifactsBucket` und aus der Vorlage.

1. Stellen Sie die Vorlage bereit, um Ihren Bootstrap-Stack zu aktualisieren. Im Folgenden finden Sie ein Beispiel mit der CDK-CLI:

   ```
   $ cdk bootstrap aws://<account-id>/<region> --template bootstrap-template.yaml
   ```

## Überlegungen
<a name="bootstrapping-env-considerations"></a>

Da beim Bootstrapping Ressourcen in Ihrer Umgebung bereitgestellt werden, können AWS Gebühren anfallen, wenn diese Ressourcen mit dem CDK verwendet werden. AWS 

# AWS CDK-Bootstrapping anpassen
<a name="bootstrapping-customizing"></a>

Sie können das AWS Cloud Development Kit (AWS CDK) -Bootstrapping anpassen, indem Sie die AWS CDK-Befehlszeilenschnittstelle (AWS CDK CLI) verwenden oder die Bootstrap-Vorlage ändern und bereitstellen. AWS CloudFormation 

[Eine Einführung in Bootstrapping finden Sie unter CDK-Bootstrapping.AWS](bootstrapping.md)

## Verwenden Sie die CDK-CLI, um das Bootstrapping anzupassen
<a name="bootstrapping-customizing-cli"></a>

Im Folgenden finden Sie einige Beispiele dafür, wie Sie Bootstrapping mithilfe der CDK-CLI anpassen können. [Eine Liste aller `cdk bootstrap` Optionen finden Sie unter cdk bootstrap.](ref-cli-cmd-bootstrap.md)<a name="bootstrapping-customizing-cli-s3-name"></a>

 **Den Namen des Amazon S3 S3-Buckets überschreiben**   
Verwenden Sie die `--bootstrap-bucket-name` Option, um den standardmäßigen Amazon S3 S3-Bucket-Namen zu überschreiben. Dies kann erfordern, dass Sie die Vorlagensynthese ändern. Weitere Informationen finden Sie unter [Anpassen der CDK-Stack-Synthese](configure-synth.md#bootstrapping-custom-synth).<a name="bootstrapping-customizing-keys"></a>

 **Ändern Sie serverseitige Verschlüsselungsschlüssel für den Amazon S3 S3-Bucket**   
Standardmäßig ist der Amazon S3 S3-Bucket im Bootstrap-Stack so konfiguriert, dass er AWS verwaltete Schlüssel für die serverseitige Verschlüsselung verwendet. Um einen vorhandenen, vom Kunden verwalteten Schlüssel zu verwenden, verwenden Sie die `--bootstrap-kms-key-id` Option und geben Sie einen Wert für den zu AWS verwendenden Key Management Service (AWS KMS) -Schlüssel an. Wenn Sie mehr Kontrolle über den Verschlüsselungsschlüssel haben möchten, stellen Sie sicher, `--bootstrap-customer-key` dass Sie einen vom Kunden verwalteten Schlüssel verwenden.<a name="bootstrapping-customizing-cli-deploy-role"></a>

 **Ordnen Sie verwaltete Richtlinien der Bereitstellungsrolle zu, die übernommen wurde von AWS CloudFormation**   
Standardmäßig werden Stacks mithilfe der `AdministratorAccess` Richtlinie mit vollen Administratorrechten bereitgestellt. Wenn Sie Ihre eigenen verwalteten Richtlinien verwenden möchten, verwenden Sie die `--cloudformation-execution-policies` Option und geben Sie die ARNs verwalteten Richtlinien an, die der Bereitstellungsrolle zugewiesen werden sollen.  
Um mehrere Richtlinien bereitzustellen, übergeben Sie ihnen eine einzelne Zeichenfolge, getrennt durch Kommas:  

```
$ cdk bootstrap --cloudformation-execution-policies "arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
```
Um Bereitstellungsfehler zu vermeiden, stellen Sie sicher, dass die von Ihnen angegebenen Richtlinien für alle Bereitstellungen ausreichen, die Sie in der Umgebung durchführen, für die das Bootstrapping ausgeführt wird.

 **Ändern Sie den Qualifier, der den Namen der Ressourcen in Ihrem Bootstrap-Stack hinzugefügt wird**   
Standardmäßig wird der `hnb659fds` Qualifier zur physischen ID der Ressourcen in Ihrem Bootstrap-Stack hinzugefügt. Um diesen Wert zu ändern, verwenden Sie die `--qualifier` Option.  
Diese Änderung ist nützlich, wenn mehrere Bootstrap-Stacks in derselben Umgebung bereitgestellt werden, um Namenskonflikte zu vermeiden.  
Die Änderung des Qualifizierers dient der Namensisolierung zwischen automatisierten Tests des CDK selbst. Wenn Sie die der CloudFormation Ausführungsrolle erteilten IAM-Berechtigungen nicht sehr genau eingrenzen können, bietet die Verwendung von zwei verschiedenen Bootstrap-Stacks in einem einzigen Konto keine Vorteile für die Isolierung von Rechten. Daher ist es normalerweise nicht erforderlich, diesen Wert zu ändern.  
Wenn Sie den Qualifier ändern, muss Ihre CDK-App den geänderten Wert an den Stack-Synthesizer übergeben. Weitere Informationen finden Sie unter [Anpassen der CDK-Stacksynthese](configure-synth.md#bootstrapping-custom-synth).

 **Fügen Sie dem Bootstrap-Stack Tags hinzu**   
Verwenden Sie die `--tags` Option im Format von`KEY=VALUE`, um Ihrem Bootstrap-Stack CloudFormation Tags hinzuzufügen.

 **Geben Sie zusätzliche AWS Konten an, die in der Umgebung bereitgestellt werden können, für die das Bootstrapping ausgeführt wird**   
Verwenden Sie die `--trust` Option, um zusätzliche AWS Konten bereitzustellen, die in der Umgebung bereitgestellt werden dürfen, für die das Bootstrapping ausgeführt wird. Standardmäßig wird dem Konto, das das Bootstrapping durchführt, immer vertraut.  
Diese Option ist nützlich, wenn Sie eine Umgebung bootstrappen, die ein CDK ist Pipeline aus einer anderen Umgebung, in der das Deployment erfolgen soll.  
Wenn Sie diese Option verwenden, müssen Sie auch Folgendes angeben`--cloudformation-execution-policies`.  
Um vertrauenswürdige Konten zu einem vorhandenen Bootstrap-Stack hinzuzufügen, müssen Sie alle Konten angeben, denen Sie vertrauen möchten, einschließlich der Konten, die Sie möglicherweise zuvor angegeben haben. Wenn Sie nur neue Konten angeben, denen Sie vertrauen können, werden die zuvor vertrauenswürdigen Konten entfernt.  
Im Folgenden finden Sie ein Beispiel, das zwei Konten vertraut:  

```
$ cdk bootstrap aws://123456789012/us-west-2 --trust 234567890123 --trust 987654321098 --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
 ⏳  Bootstrapping environment aws://123456789012/us-west-2...
Trusted accounts for deployment: 234567890123, 987654321098
Trusted accounts for lookup: (none)
Execution policies: arn:aws:iam::aws:policy/AdministratorAccess
CDKToolkit: creating CloudFormation changeset...
 ✅  Environment aws://123456789012/us-west-2 bootstrapped.
```<a name="bootstrapping-customizing-cli-accounts-lookup"></a>

 **Geben Sie zusätzliche AWS Konten an, die in der Umgebung, in der das Bootstrapping ausgeführt wird, nach Informationen suchen können**   
Verwenden Sie die `--trust-for-lookup` Option, um AWS Konten anzugeben, die nach Kontextinformationen in der Umgebung suchen dürfen, in der das Bootstrap ausgeführt wird. Diese Option ist nützlich, um Konten die Erlaubnis zu geben, Stacks zu synthetisieren, die in der Umgebung bereitgestellt werden, ohne ihnen tatsächlich die Erlaubnis zu geben, diese Stacks direkt bereitzustellen.<a name="bootstrapping-customizing-cli-protection"></a>

 **Aktivieren Sie den Kündigungsschutz für den Bootstrap-Stack**   
Wenn ein Bootstrap-Stack gelöscht wird, werden die AWS Ressourcen, die ursprünglich in der Umgebung bereitgestellt wurden, ebenfalls gelöscht. Nach dem Bootstrapping Ihrer Umgebung empfehlen wir, den Bootstrap-Stack der Umgebung nicht zu löschen und neu zu erstellen, es sei denn, Sie tun dies absichtlich. Versuchen Sie stattdessen, den Bootstrap-Stack auf eine neue Version zu aktualisieren, indem Sie den Befehl erneut ausführen. `cdk bootstrap`  
Verwenden Sie die `--termination-protection` Option, um die Einstellungen für den Kündigungsschutz für den Bootstrap-Stack zu verwalten. Durch die Aktivierung des Kündigungsschutzes verhindern Sie, dass der Bootstrap-Stack und seine Ressourcen versehentlich gelöscht werden. Dies ist besonders wichtig, wenn Sie CDK verwenden Pipelines da es keine allgemeine Wiederherstellungsoption gibt, falls Sie den Bootstrap-Stack versehentlich löschen.  
Nachdem Sie den Kündigungsschutz aktiviert haben, können Sie die AWS CLI oder die AWS CloudFormation Konsole zur Überprüfung verwenden.    
 **Um den Kündigungsschutz zu aktivieren**   

1. Führen Sie den folgenden Befehl aus, um den Kündigungsschutz für einen neuen oder vorhandenen Bootstrap-Stack zu aktivieren:

   ```
   $ cdk bootstrap --termination-protection
   ```

1. Verwenden Sie zur Überprüfung die AWS CLI oder die CloudFormation Konsole. Das Folgende ist ein Beispiel für die Verwendung der AWS CLI. Wenn Sie Ihren Bootstrap-Stack-Namen geändert haben, `CDKToolkit` ersetzen Sie ihn durch Ihren Stack-Namen:

   ```
   $ aws cloudformation describe-stacks --stack-name <CDKToolkit> --query "Stacks[0].EnableTerminationProtection"
   true
   ```

## Ändern Sie die Standard-Bootstrap-Vorlage
<a name="bootstrapping-customizing-template"></a>

Wenn Sie mehr Anpassungen benötigen, als die CDK-CLI bieten kann, können Sie die Bootstrap-Vorlage nach Bedarf ändern. Stellen Sie dann die Vorlage bereit, um Ihre Umgebung zu booten.

 **Um die Standard-Bootstrap-Vorlage zu ändern und bereitzustellen**   

1. Rufen Sie die Standard-Bootstrap-Vorlage mithilfe der `--show-template` Option ab. Standardmäßig gibt die CDK-CLI die Vorlage in Ihrem Terminalfenster aus. Sie können den CDK-CLI-Befehl ändern, um die Vorlage auf Ihrem lokalen Computer zu speichern. Im Folgenden wird ein Beispiel gezeigt:

   ```
   $ cdk bootstrap --show-template > <my-bootstrap-template.yaml>
   ```

1. Ändern Sie die Bootstrap-Vorlage nach Bedarf. Alle Änderungen, die Sie vornehmen, sollten dem Bootstrapping-Vorlagenvertrag entsprechen. Weitere Informationen zum Bootstrapping-Vorlagenvertrag finden [Sie unter Folgen Sie](#bootstrapping-contract) dem Bootstrap-Vertrag.

   Um sicherzustellen, dass Ihre Anpassungen später nicht versehentlich von einem Benutzer überschrieben werden, der die Standardvorlage `cdk bootstrap` verwendet, ändern Sie den Standardwert des Vorlagenparameters. `BootstrapVariant` Die CDK-CLI erlaubt nur das Überschreiben des Bootstrap-Stacks mit Vorlagen, die dieselbe `BootstrapVariant` und eine gleiche oder eine höhere Version als die aktuell bereitgestellte Vorlage haben.

1. Stellen Sie Ihre modifizierte Vorlage mit Ihrer bevorzugten AWS CloudFormation Bereitstellungsmethode bereit. Im Folgenden finden Sie ein Beispiel, das die CDK-CLI verwendet:

   ```
   $ cdk bootstrap --template <my-bootstrap-template.yaml>
   ```

## Folgen Sie dem Bootstrap-Vertrag
<a name="bootstrapping-contract"></a>

Damit Ihre CDK-Apps ordnungsgemäß bereitgestellt werden können, müssen die während der Synthese erstellten CloudFormation Vorlagen die beim Bootstrapping erstellten Ressourcen korrekt spezifizieren. *Diese Ressourcen werden allgemein als Bootstrap-Ressourcen bezeichnet.* Bootstrapping erstellt Ressourcen in Ihrer AWS Umgebung, die vom AWS CDK zur Durchführung von Bereitstellungen und zur Verwaltung von Anwendungsressourcen verwendet werden. Synthesis erstellt CloudFormation Vorlagen aus jedem CDK-Stack in Ihrer Anwendung. Diese Vorlagen definieren nicht nur die AWS Ressourcen, die über Ihre Anwendung bereitgestellt werden. Sie spezifizieren auch die Bootstrap-Ressourcen, die während der Bereitstellung verwendet werden sollen.

Während der Synthese weiß die CDK-CLI nicht genau, wie Ihre AWS Umgebung gebootet wurde. Stattdessen erstellt die CDK-CLI CloudFormation Vorlagen, die auf dem von Ihnen konfigurierten Synthesizer basieren. Wenn Sie das Bootstrapping anpassen, müssen Sie daher möglicherweise die Synthese anpassen. Anweisungen zum Anpassen der Synthese finden Sie unter [Anpassen der CDK-Stack-Synthese](configure-synth.md#bootstrapping-custom-synth). Damit soll sichergestellt werden, dass Ihre synthetisierten CloudFormation Vorlagen mit Ihrer Bootstrap-Umgebung kompatibel sind. *Diese Kompatibilität wird als Bootstrap-Vertrag bezeichnet.*

Die einfachste Methode zur Anpassung der Stack-Synthese besteht darin, die `DefaultStackSynthesizer` Klasse in Ihrer `Stack` Instanz zu ändern. Wenn Sie Anpassungen benötigen, die über das hinausgehen, was diese Klasse bieten kann, können Sie Ihren eigenen Synthesizer als eine Klasse schreiben, die implementiert ` [IStackSynthesizer](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.IStackSynthesizer.html) ` (vielleicht abgeleitet von`DefaultStackSynthesizer`).

Wenn Sie Bootstrapping anpassen, halten Sie sich an den Bootstrap-Vorlagenvertrag, um die Kompatibilität mit zu gewährleisten. `DefaultStackSynthesizer` Wenn Sie das Bootstrapping über den Bootstrap-Vorlagenvertrag hinaus ändern, müssen Sie Ihren eigenen Synthesizer schreiben.

### Versionsverwaltung
<a name="bootstrapping-contract-versioning"></a>

Die Bootstrap-Vorlage sollte eine Ressource zum Erstellen eines Amazon EC2 Systems Manager (SSM) -Parameters mit einem bekannten Namen und einer Ausgabe enthalten, die die Version der Vorlage widerspiegelt:

```
Resources:
  CdkBootstrapVersion:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Name:
        Fn::Sub: '/cdk-bootstrap/${Qualifier}/version'
      Value: 4
Outputs:
  BootstrapVersion:
    Value:
      Fn::GetAtt: [CdkBootstrapVersion, Value]
```

### Rollen
<a name="bootstrapping-contract-roles"></a>

Das `DefaultStackSynthesizer` erfordert fünf IAM-Rollen für fünf verschiedene Zwecke. Wenn Sie die Standardrollen nicht verwenden, müssen Sie Ihre IAM-Rolle ARNs in Ihrem `DefaultStackSynthesizer` Objekt angeben. Die Rollen lauten wie folgt:
+ Die *Bereitstellungsrolle* wird von der CDK-CLI und von AWS CodePipeline zur Bereitstellung in einer Umgebung übernommen. Sie `AssumeRolePolicy` steuert, wer die Bereitstellung in der Umgebung durchführen kann. In der Vorlage können Sie sehen, welche Berechtigungen diese Rolle benötigt.
+ Die *Lookup-Rolle* wird von der CDK-CLI übernommen, um Kontext-Lookups in einer Umgebung durchzuführen. Sie `AssumeRolePolicy` steuert, wer in der Umgebung bereitstellen kann. Die Berechtigungen, die diese Rolle benötigt, können der Vorlage entnommen werden.
+ Die *Rolle zur Dateiveröffentlichung* und die *Rolle zur Veröffentlichung von Bildern* werden von der CDK-CLI und von AWS CodeBuild Projekten zur Veröffentlichung von Assets in einer Umgebung übernommen. Sie werden verwendet, um in den Amazon S3 S3-Bucket bzw. das Amazon ECR-Repository zu schreiben. Diese Rollen benötigen Schreibzugriff auf diese Ressourcen.
+  *Die AWS CloudFormation Ausführungsrolle* wird übergeben, AWS CloudFormation um die eigentliche Bereitstellung durchzuführen. Ihre Berechtigungen sind die Berechtigungen, unter denen die Bereitstellung ausgeführt wird. Die Berechtigungen werden als Parameter, der die verwalteten Richtlinien auflistet, an den Stack übergeben ARNs.

### Outputs
<a name="bootstrapping-contract-outputs"></a>

Die CDK-CLI erfordert, dass die folgenden CloudFormation Ausgaben auf dem Bootstrap-Stack vorhanden sind:
+  `BucketName`— Der Name des Datei-Asset-Buckets.
+  `BucketDomainName`— Der Datei-Asset-Bucket im Domainnamenformat.
+  `BootstrapVersion`— Die aktuelle Version des Bootstrap-Stacks.

### Verlauf der Vorlage
<a name="bootstrapping-contract-history"></a>

Das Bootstrap-Template ist versioniert und entwickelt sich im Laufe der Zeit mit dem AWS CDK selbst weiter. Wenn Sie Ihre eigene Bootstrap-Vorlage bereitstellen, halten Sie sie mit der kanonischen Standardvorlage auf dem neuesten Stand. Sie möchten sicherstellen, dass Ihre Vorlage weiterhin mit allen CDK-Funktionen funktioniert. Weitere Informationen finden Sie unter [Versionsverlauf der Bootstrap-Vorlage](bootstrapping-env.md#bootstrap-template-history).

# Berechtigungsgrenzen für das AWS CDK erstellen und anwenden
<a name="customize-permissions-boundaries"></a>

Eine *Berechtigungsgrenze* ist eine erweiterte Funktion von AWS Identity and Access Management (IAM), mit der Sie die maximalen Berechtigungen festlegen können, die eine IAM-Entität, z. B. ein Benutzer oder eine Rolle, haben kann. Mithilfe von Berechtigungsgrenzen können Sie die Aktionen einschränken, die IAM-Entitäten ausführen können, wenn Sie das AWS Cloud Development Kit (AWS CDK) verwenden.

Weitere Informationen zu Berechtigungsgrenzen finden Sie unter [Berechtigungsgrenzen für IAM-Entitäten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) im *IAM-Benutzerhandbuch*.

## Wann sollten Berechtigungsgrenzen mit dem CDK verwendet werden AWS
<a name="customize-permissions-boundaries-when"></a>

Erwägen Sie die Einführung von Rechtegrenzen, wenn Sie Entwickler in Ihrer Organisation daran hindern müssen, bestimmte Aktionen mit dem AWS CDK durchzuführen. Wenn es in Ihrer AWS Umgebung beispielsweise bestimmte Ressourcen gibt, die Entwickler nicht ändern sollen, können Sie eine Berechtigungsgrenze erstellen und anwenden.

## Wie wendet man Berechtigungsgrenzen mit dem AWS CDK an
<a name="customize-permissions-boundaries-how"></a>

### Erstellen Sie die Berechtigungsgrenze
<a name="customize-permissions-boundaries-how-create"></a>

Zunächst erstellen Sie die Berechtigungsgrenze, indem Sie eine AWS verwaltete Richtlinie oder eine vom Kunden verwaltete Richtlinie verwenden, um die Grenze für eine IAM-Entität (Benutzer oder Rolle) festzulegen. Diese Richtlinie schränkt die maximalen Berechtigungen für den Benutzer oder die Rolle ein. Anweisungen zum Erstellen von Berechtigungsgrenzen finden Sie unter [Berechtigungsgrenzen für IAM-Entitäten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) im *IAM-Benutzerhandbuch*.

Berechtigungsgrenzen legen die maximalen Berechtigungen fest, die eine IAM-Entität haben kann, gewähren jedoch keine eigenständigen Berechtigungen. Sie müssen Berechtigungsgrenzen zusammen mit IAM-Richtlinien verwenden, um die richtigen Berechtigungen für Ihre Organisation effektiv einzuschränken und zu gewähren. Sie müssen außerdem verhindern, dass IAM-Entitäten die von Ihnen festgelegten Grenzen umgehen können. Ein Beispiel finden Sie im *IAM-Benutzerhandbuch* unter [Delegieren von Verantwortung an andere mithilfe von Rechtegrenzen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html#access_policies_boundaries-delegate).

### Wenden Sie die Berechtigungsgrenze beim Bootstrapping an
<a name="customize-permissions-boundaries-how-apply"></a>

Nachdem Sie die Berechtigungsgrenze erstellt haben, können Sie sie für das AWS CDK erzwingen, indem Sie sie beim Bootstrapping anwenden.

Verwenden Sie die [`--custom-permissions-boundary`](ref-cli-cmd-bootstrap.md#ref-cli-cmd-bootstrap-options-custom-permissions-boundary)Option und geben Sie den Namen der anzuwendenden Berechtigungsgrenze an. Im Folgenden finden Sie ein Beispiel, das eine Berechtigungsgrenze mit dem Namen anwendet`cdk-permissions-boundary`:

```
$ cdk bootstrap --custom-permissions-boundary <cdk-permissions-boundary>
```

Standardmäßig verwendet das CDK die in der Bootstrap-Vorlage definierte `CloudFormationExecutionRole` IAM-Rolle, um Berechtigungen für die Durchführung von Bereitstellungen zu erhalten. Durch Anwenden der benutzerdefinierten Berechtigungsgrenze beim Bootstrapping wird die Berechtigungsgrenze an diese Rolle angehängt. Die Berechtigungsgrenze legt dann die maximalen Berechtigungen fest, die von Entwicklern in Ihrer Organisation bei der Verwendung des AWS CDK ausgeführt werden können. Weitere Informationen zu dieser Rolle finden Sie unter [Beim Bootstrapping erstellte IAM-Rollen](bootstrapping-env.md#bootstrapping-env-roles).

Wenn Sie Berechtigungsgrenzen auf diese Weise anwenden, werden sie auf die spezifische Umgebung angewendet, in der Sie das Bootstrap ausführen. Um dieselbe Berechtigungsgrenze für mehrere Umgebungen zu verwenden, müssen Sie beim Bootstrapping die Berechtigungsgrenze für jede Umgebung anwenden. Sie können auch unterschiedliche Berechtigungsgrenzen für verschiedene Umgebungen anwenden.

## Weitere Informationen
<a name="customize-permissions-boundaries-learn"></a>

Weitere Informationen zu Berechtigungsgrenzen finden Sie im * AWS Sicherheitsblog* unter [Wann und wo Sie IAM-Berechtigungsgrenzen verwenden](https://aws.amazon.com/blogs/security/when-and-where-to-use-iam-permissions-boundaries/) sollten.

# Behebung von AWS CDK-Bootstrapping-Problemen
<a name="bootstrapping-troubleshoot"></a>

Beheben Sie häufig auftretende Probleme beim Bootstrapping Ihrer Umgebung mit dem AWS Cloud Development Kit (AWS CDK).
+ [Eine Einführung in Bootstrapping finden Sie unter CDK-Bootstrapping.AWS](bootstrapping.md)
+ Anweisungen zum Bootstrapping finden Sie unter [Bootstrapping](bootstrapping-env.md) für Ihre Umgebung zur Verwendung mit dem CDK. AWS 

## Beim Bootstrapping mit der Standardvorlage erhalten Sie einen 'CREATE\$1FAILED'-Fehler für den Amazon S3 S3-Bucket
<a name="bootstrapping-troubleshoot-s3-bucket-name"></a>

Beim Bootstrapping mit dem Befehl AWS CDK Command Line Interface (CDK CLI) `cdk bootstrap` mit der Standard-Bootstrap-Vorlage erhalten Sie die folgende Fehlermeldung:

```
CREATE_FAILED | AWS::S3::Bucket | <BucketName> already exists
```

Stellen Sie vor der Fehlerbehebung sicher, dass Sie die neueste Version der CDK-CLI verwenden.
+ Führen `cdk --version` Sie den Befehl aus, um Ihre Version zu überprüfen.
+ Führen Sie den Befehl aus, um die neueste Version zu installieren`npm install -g aws-cdk`.

Versuchen Sie nach der Installation der neuesten Version erneut, Ihre Umgebung zu booten. Wenn immer noch derselbe Fehler angezeigt wird, fahren Sie mit der Problembehandlung fort.

### Häufige Ursachen
<a name="bootstrapping-troubleshoot-s3-bucket-name-causes"></a>

Wenn Sie Ihre Umgebung booten, generiert das AWS CDK physische Ressourcen IDs für Ihre Bootstrap-Ressourcen. Weitere Informationen finden Sie unter Beim Bootstrapping [ IDs erstellte Ressource](bootstrapping-env.md#bootstrapping-env-default-id).

Im Gegensatz zu den anderen Bootstrap-Ressourcen sind Amazon S3 S3-Bucket-Namen global. Das bedeutet, dass jeder Bucket-Name für alle AWS Konten in allen AWS Regionen innerhalb einer Partition eindeutig sein muss. Weitere Informationen finden Sie unter [Buckets-Übersicht](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) im *Amazon S3 S3-Benutzerhandbuch*. Die häufigste Ursache für diesen Fehler ist daher, dass die als Ihr Bucket-Name generierte physische ID bereits irgendwo in der Partition existiert. Dies kann in Ihrem Konto oder einem anderen Konto sein.

Im Folgenden finden Sie ein Beispiel für einen Bucket-Namen:`cdk-hnb659fds-assets-012345678910-us-west-1`. Obwohl dies unwahrscheinlich ist, ist es möglich, dass dieser Name für einen Amazon S3 S3-Bucket von einem anderen AWS Konto verwendet wird, da der Qualifier und die Konto-ID Teil des Namens sind. Da Bucket-Namen global gültig sind, können Sie sie nicht verwenden, wenn sie von einem anderen Konto in derselben Partition verwendet werden. Höchstwahrscheinlich existiert irgendwo in Ihrem Konto ein Bucket mit demselben Namen. Dies könnte sich in der Region befinden, in der Sie versuchen, ein Bootstrap durchzuführen, oder in einer anderen Region.

Im Allgemeinen besteht die Lösung darin, diesen Bucket in Ihrem Konto zu finden und zu bestimmen, was mit ihm geschehen soll, oder das Bootstrapping so anzupassen, dass Bootstrap-Ressourcen mit einem anderen Namen erstellt werden.

### Auflösung
<a name="bootstrapping-troubleshoot-s3-bucket-name-resolution"></a>

Stellen Sie zunächst fest, ob in Ihrem Konto ein Bucket mit demselben Namen existiert. AWS Wenn Sie eine AWS Identität mit gültigen Berechtigungen zum Nachschlagen von Amazon S3 S3-Buckets in Ihrem Konto verwenden, können Sie dies auf folgende Weise tun:
+ Verwenden Sie den AWS Befehl Command Line Interface (AWS CLI)`aws s3 ls`, um eine Liste all Ihrer Buckets anzuzeigen.
+ Suchen Sie mithilfe der [Amazon S3 S3-Konsole](https://console.aws.amazon.com/s3) nach Bucket-Namen für jede Region in Ihrem Konto.

Wenn ein Bucket mit demselben Namen existiert, stellen Sie fest, ob er verwendet wird. Wenn er nicht verwendet wird, sollten Sie erwägen, den Bucket zu löschen und erneut zu versuchen, Ihre Umgebung zu booten.

Wenn ein Bucket mit demselben Namen existiert und Sie ihn nicht löschen möchten, stellen Sie fest, ob er bereits mit einem Bootstrap-Stack in Ihrem Konto verknüpft ist. Möglicherweise müssen Sie mehrere Regionen überprüfen. Die Region im Amazon S3 S3-Bucket-Namen bedeutet nicht unbedingt, dass sich der Bucket in dieser Region befindet. Um zu überprüfen, ob er mit dem `CDKToolkit` Bootstrap-Stack verknüpft ist, können Sie für jede Region einen der folgenden Schritte ausführen:
+ Verwenden Sie den AWS `aws cloudformation describe-stack-resources --stack-name <CDKToolkit> --region <Region>` CLI-Befehl, um die Ressourcen in Ihrem Bootstrap-Stack anzuzeigen und zu überprüfen, ob der Bucket aufgeführt ist.
+ Suchen Sie in der [AWS CloudFormation Konsole](https://console.aws.amazon.com/cloudformation) den `CDKToolkit` Stack. Überprüfen Sie dann auf der Registerkarte **Ressourcen**, ob der Bucket vorhanden ist.

Wenn der Bucket einem Bootstrap-Stack zugeordnet ist, stellen Sie fest, ob sich der Bootstrap-Stack in derselben Region befindet, in der Sie versuchen, ein Bootstrap durchzuführen. Ist dies der Fall, ist Ihre Umgebung bereits bootstrapped und Sie sollten in der Lage sein, das CDK für die Bereitstellung von Anwendungen in Ihrer Umgebung zu verwenden. Wenn der Amazon S3 S3-Bucket mit einem Bootstrap-Stack in einer anderen Region verknüpft ist, müssen Sie festlegen, was zu tun ist. Mögliche Lösungen umfassen das Umbenennen des vorhandenen Amazon S3 S3-Buckets, das Löschen des aktuellen Amazon S3 S3-Buckets, falls er nicht verwendet wird, oder die Verwendung eines neuen Namens für den Amazon S3 S3-Bucket, den Sie erstellen möchten.

Wenn Sie in Ihrem Konto keinen Amazon S3 S3-Bucket mit demselben Namen finden können, ist er möglicherweise in einem anderen Konto vorhanden. Um dieses Problem zu lösen, müssen Sie das Bootstrapping anpassen, um neue Namen für all Ihre Bootstrap-Ressourcen oder nur für Ihren Amazon S3 S3-Bucket zu erstellen. Um neue Namen für alle Bootstrap-Ressourcen zu erstellen, können Sie den Qualifier ändern. Um einen neuen Namen nur für Ihren Amazon S3 S3-Bucket zu erstellen, können Sie einen neuen Bucket-Namen angeben.

Um das Bootstrapping anzupassen, können Sie Optionen mit dem `cdk bootstrap` CDK-CLI-Befehl oder durch Ändern der Bootstrap-Vorlage verwenden. [Anweisungen finden Sie unter CDK-Bootstrapping anpassen. AWS](bootstrapping-customizing.md)

Wenn Sie das Bootstrapping anpassen, müssen Sie dieselben Änderungen an der Synthese vornehmen, bevor Sie eine Anwendung ordnungsgemäß bereitstellen können. Anweisungen finden Sie unter [Anpassen der CDK-Stack-Synthese](configure-synth.md#bootstrapping-custom-synth).

Sie können beispielsweise einen neuen Qualifier angeben mit: `cdk bootstrap`

```
$ cdk bootstrap --qualifier <abcde0123>
```

Im Folgenden finden Sie ein Beispiel für einen Amazon S3 S3-Bucket-Namen, der mit dieser Änderung erstellt wird:`cdk-abcde0123-assets-012345678910-us-west-1`. Alle Bootstrap-Ressourcen, die während des Bootstrappings erstellt wurden, verwenden diesen Qualifier.

Bei der Entwicklung Ihrer CDK-App müssen Sie Ihren benutzerdefinierten Qualifier in Ihrem Synthesizer angeben. Dies hilft dem CDK bei der Identifizierung Ihrer Bootstrap-Ressourcen während der Synthese und Bereitstellung. Im Folgenden finden Sie ein Beispiel für die Anpassung des Standardsynthesizers für Ihre Stack-Instance:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'abcde0123',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'abcde0123',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        qualifier="abcde0123"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .qualifier("abcde0123")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        Qualifier = "abcde0123"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		Qualifier: jsii.String("abcde0123"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```
Sie können den neuen Qualifier auch in der `cdk.json` Datei Ihres CDK-Projekts angeben:  

```
{
  "app": "...",
  "context": {
    "@aws-cdk/core:bootstrapQualifier": "abcde0123"
  }
}
```
Um nur den Amazon S3 S3-Bucket-Namen zu ändern, können Sie die ` --bootstrap-bucket-name ` Option verwenden. Im Folgenden wird ein Beispiel gezeigt:  

```
$ cdk bootstrap --bootstrap-bucket-name '<my-new-bucket-name>'
```

Bei der Entwicklung Ihrer CDK-App müssen Sie Ihren neuen Bucket-Namen in Ihrem Synthesizer angeben. Im Folgenden finden Sie ein Beispiel für die Anpassung des Standardsynthesizers für Ihre Stack-Instance:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    fileAssetsBucketName: 'my-new-bucket-name',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    fileAssetsBucketName: 'my-new-bucket-name',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        file_assets_bucket_name='my-new-bucket-name'
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .fileAssetsBucketName("my-new-bucket-name")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        FileAssetsBucketName = "my-new-bucket-name"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		FileAssetsBucketName: jsii.String("my-new-bucket-name"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```

### Vorbeugung
<a name="bootstrapping-troubleshoot-s3-bucket-name-prevention"></a>

Wir empfehlen, dass Sie für jede AWS Umgebung, die Sie verwenden möchten, ein proaktives Bootstrapping durchführen. Weitere Informationen finden Sie unter [Wann sollten Sie Ihre Umgebung booten?](bootstrapping-env.md#bootstrapping-env-when) Speziell für das Problem mit der Benennung von Amazon S3 S3-Buckets werden dadurch Amazon S3 S3-Buckets in jeder AWS Umgebung erstellt und andere daran gehindert, Ihren Amazon S3 S3-Bucket-Namen zu verwenden.