Bootstrap Ihre Umgebung für die Verwendung mit dem AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

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 Ihre Umgebung für die Verwendung mit dem AWS CDK

Führen Sie ein Bootstrapping für Ihre AWS Umgebung durch, um sie für AWS Cloud Development Kit (AWS CDK) Stack-Bereitstellungen vorzubereiten.

  • Eine Einführung in Umgebungen finden Sie unter. Umgebungen

  • Eine Einführung in Bootstrapping finden Sie unter. Bootstrapping

Wie booten Sie Ihre Umgebung

Sie können die AWS CDK Befehlszeilenschnittstelle (AWS CDK CLI) oder Ihr bevorzugtes AWS CloudFormation Bereitstellungstool verwenden, um Ihre Umgebung zu booten.

Verwenden Sie das CDK CLI

Sie können den CLI cdk bootstrap CDK-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

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, bezieht das CDK CLI Umgebungsinformationen aus Standardquellen, wie z. B. Ihren credentials AND-Dateien oder anderen Umgebungsinformationen, die für Ihren config 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 config und credentials -Dateien angegeben ist, verwenden Sie die Option: --profile

$ cdk bootstrap --profile prod

Weitere Informationen zum cdk bootstrap Befehl und zu den unterstützten Optionen finden Sie untercdk bootstrap.

Verwenden Sie ein beliebiges AWS CloudFormation Tool

Sie können die Bootstrap-Vorlage aus dem GitHubaws-cdk-Repository kopieren oder die Vorlage mit dem Befehl abrufen. cdk bootstrap --show-template Verwenden Sie dann ein beliebiges AWS CloudFormation Tool, um die Vorlage in Ihrer Umgebung bereitzustellen.

Mit dieser Methode können Sie AWS CloudFormation StackSets oder verwenden AWS Control Tower. Sie können auch die AWS CloudFormation Konsole oder die AWS Command Line Interface (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:

macOS/Linux
$ cdk bootstrap --show-template > bootstrap-template.yaml
Windows

PowerShell Muss unter Windows verwendet werden, um die Kodierung der Vorlage beizubehalten.

powershell "cdk bootstrap --show-template | Out-File -encoding utf8 bootstrap-template.yaml"

Um diese Vorlage mithilfe des CDK bereitzustellenCLI, können Sie Folgendes ausführen:

$ cdk bootstrap --template bootstrap-template.yaml

Im Folgenden finden Sie ein Beispiel für die Verwendung von AWS CLI zur Bereitstellung der Vorlage:

macOS/Linux
aws cloudformation create-stack \ --stack-name CDKToolkit \ --template-body file://path/to/bootstrap-template.yaml \ --capabilities CAPABILITY_NAMED_IAM \ --region us-west-1
Windows
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 multiple AWS-Konten for use CloudFormation StackSets im AWS CDK AWS Cloud Operations & Migrations-Blog. CloudFormation StackSets

Wann sollten Sie Ihre Umgebung booten

Sie müssen jede Umgebung bootstrappen, bevor Sie sie in der Umgebung bereitstellen. 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)

Es ist in Ordnung, eine Umgebung mehr als einmal zu booten. Wenn eine Umgebung bereits gebootet wurde, wird der Bootstrap-Stack bei Bedarf aktualisiert. Andernfalls wird nichts passieren.

Aktualisiere deinen 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.

Passen Sie das Bootstrapping an

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. AWS CDK Bootstrapping anpassen

Bootstrapping mit CDK Pipelines

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. Starten Sie die Umgebung und versuchen Sie es erneut.

Schützen Sie Ihren Bootstrap-Stack vor dem Löschen

Wenn ein Bootstrap-Stack gelöscht wird, werden auch die AWS Ressourcen gelöscht, die ursprünglich in der Umgebung zur Unterstützung von CDK-Bereitstellungen bereitgestellt wurden. 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.

Versionsverlauf der Bootstrap-Vorlage

Die Bootstrap-Vorlage ist versioniert und entwickelt sich im Laufe der Zeit mit der selbst. AWS CDK 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

Frühere Versionen der Bootstrap-Vorlage erstellten standardmäßig AWS KMS key in jeder Bootstrap-Umgebung eine. Um Gebühren für den KMS-Schlüssel zu vermeiden, starten Sie diese Umgebungen neu mit. --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 erforderlichFileAsetKeyArn. 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 Suchrolle 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 hinzucdk 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 durch Security Hub.
17 2,72,0 Behebt den Security Hub Hub-Befund 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. (#27964)
20 2,119,0 Fügen Sie der Rolle „ AWS CloudFormation IAM-Bereitstellung“ eine ssm:GetParameters Aktion hinzu. Weitere Informationen finden Sie unter #28336.

Führen Sie ein Upgrade von einer älteren auf eine moderne Bootstrap-Vorlage durch

Die AWS CDK Version 1 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.

Funktion 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 (bestimmt durch AWS Profil, Umgebungsvariablen usw.) bereitgestellt 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 AWS CDK Apps können eine Mindestversion erfordern
Ressourcen * Amazon-S3-Bucket Amazon-S3-Bucket
AWS KMS key
IAM-Rollen
Amazon ECR-Repository
SSM-Parameter für die Versionierung
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, die mithilfe des Legacy-Templates gebootet wurde, muss durch Re-Bootstrapping aktualisiert werden, sodass sie das moderne Template für CDK v2 verwenden kann. 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

Wenn Sie verwenden AWS Security Hub, 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.

[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 aus Amazon S3 zu lesen AWS KMS, 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 ...

Warum meldet Security Hub das?

Die Richtlinien enthalten eine Klausel Resource: * in Kombination mit einer Condition Klausel. 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 von ARN nicht 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 mit demselben AWS-Konto AWS KMS Schlüssel gestellt werden. Diese Anfragen müssen genauso AWS-Region wie der AWS KMS Schlüssel von Amazon S3 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 Deploy-Rolle 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

  2. Falls Sie dies nicht getan haben, erstellen und implementieren Sie Ihr CDK. Pipeline Anweisungen finden Sie unter Kontinuierliche Integration und Bereitstellung (CI/CD) mithilfe von CDK Pipelines.

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

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

    $ cdk bootstrap --show-template > bootstrap-template.yaml
  5. Ändern Sie die Vorlage, indem Sie Resource: * die PipelineCrossAccountArtifactsKey Anweisung durch Ihren ARN-Wert ersetzen.

  6. Stellen Sie die Vorlage bereit, um Ihren Bootstrap-Stack zu aktualisieren. Das Folgende ist ein Beispiel für die Verwendung des CLI CDK:

    $ 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 für die Verwendung des CDK: CLI

    $ cdk bootstrap --show-template > bootstrap-template.yaml
  2. Löschen Sie die PipelineCrossAccountArtifactsKey Anweisungen PipelineCrossAccountArtifactsBucket und aus der Vorlage.

  3. Stellen Sie die Vorlage bereit, um Ihren Bootstrap-Stack zu aktualisieren. Das Folgende ist ein Beispiel für die Verwendung des CLI CDK:

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

Überlegungen

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