Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 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.
Migration von AWS CDK v1 zu v2 AWS CDK
Version 2 von wurde entwickelt, um AWS Cloud Development Kit (AWS CDK) das Schreiben von Infrastruktur als Code in Ihrer bevorzugten Programmiersprache zu vereinfachen. In diesem Thema werden die Änderungen zwischen Version 1 und Version 2 von beschrieben AWS CDK.
Tipp
Verwenden Sie das Hilfsprogramm awscdk-v1-stack-finder
Die wichtigsten Änderungen von Version 1 zu Version 2 sind wie folgt. AWS CDK CDK
-
AWS CDK v2 konsolidiert die stabilen Teile der AWS Construct-Bibliothek, einschließlich der Kernbibliothek, in einem einzigen Paket.
aws-cdk-lib
Entwickler müssen keine zusätzlichen Pakete mehr für die einzelnen AWS Dienste installieren, die sie verwenden. Dieser Einzelpaket-Ansatz bedeutet auch, dass Sie die Versionen der verschiedenen CDK Bibliothekspakete nicht synchronisieren müssen.L1-Konstrukte (CfnXXXX), die genau die verfügbaren Ressourcen in darstellen AWS CloudFormation, gelten immer als stabil und sind daher in enthalten.
aws-cdk-lib
-
Experimentelle Module, in denen wir immer noch mit der Community zusammenarbeiten, um neue L2- oder L3-Konstrukte zu entwickeln, sind darin nicht enthalten.
aws-cdk-lib
Stattdessen werden sie als einzelne Pakete verteilt. Experimentelle Pakete werden mit einemalpha
Suffix und einer semantischen Versionsnummer benannt. Die semantische Versionsnummer entspricht der ersten Version der AWS Construct Library, mit der sie kompatibel sind, ebenfalls mit einem Suffix.alpha
Konstrukte werden in den Ordner verschoben,aws-cdk-lib
nachdem sie als stabil eingestuft wurden, sodass sich die Haupt-Construct-Bibliothek an die strikte semantische Versionierung halten kann.Die Stabilität wird auf der Serviceebene spezifiziert. Wenn wir beispielsweise damit beginnen, ein oder mehrere L2-Konstrukte für Amazon zu erstellen AppFlow, die zum jetzigen Zeitpunkt nur L1-Konstrukte haben, erscheinen sie zuerst in einem Modul mit dem Namen.
@aws-cdk/aws-appflow-alpha
Dann gehen sie zu demaws-cdk-lib
Zeitpunkt über, zu dem wir der Meinung sind, dass die neuen Konstrukte den grundlegenden Bedürfnissen der Kunden entsprechen.Sobald ein Modul als stabil eingestuft und integriert wurde, APIs werden neue hinzugefügt
aws-cdk-lib
, wobei die im nächsten Punkt beschriebene „betAN“ -Konvention verwendet bullet.Eine neue Version jedes experimentellen Moduls wird mit jeder Version von veröffentlicht. AWS CDK In den meisten Fällen müssen sie jedoch nicht synchron gehalten werden. Sie können das experimentelle Modul jederzeit aktualisieren
aws-cdk-lib
. Die Ausnahme ist, dass, wenn zwei oder mehr verwandte experimentelle Module voneinander abhängen, sie dieselbe Version haben müssen. -
Bei stabilen Modulen, denen neue Funktionen hinzugefügt werden, erhalten neue Module APIs (unabhängig davon, ob es sich um völlig neue Konstrukte oder neue Methoden oder Eigenschaften eines bestehenden Konstrukts handelt) während der Bearbeitung ein
Beta1
Suffix. (Gefolgt vonBeta2
Beta3
, usw., wenn grundlegende Änderungen erforderlich sind.) Eine Version von API ohne das Suffix wird hinzugefügt, wenn das als stable bezeichnet API wird. Alle Methoden außer der neuesten (ob Beta oder Final) sind dann veraltet.Wenn wir beispielsweise einem Konstrukt eine neue Methode
grantPower()
hinzufügen, erscheint sie zunächst als.grantPowerBeta1()
Wenn grundlegende Änderungen erforderlich sind (z. B. ein neuer erforderlicher Parameter oder eine neue Eigenschaft), wird die nächste Version der Methode benanntgrantPowerBeta2()
usw. Wenn die Arbeit abgeschlossen und abgeschlossen API ist, wird die MethodegrantPower()
(ohne Suffix) hinzugefügt, und die BetAN-Methoden sind veraltet.Alle Betaversionen APIs bleiben bis zur nächsten Hauptversion (3.0) in der Construct-Bibliothek, und ihre Signaturen werden sich nicht ändern. Wenn Sie sie verwenden, werden Warnmeldungen zu veralteten Versionen angezeigt. Sie sollten daher so bald wie möglich zur endgültigen Version von wechseln. API Allerdings werden future AWS CDK 2.x-Versionen Ihre Anwendung nicht beschädigen.
-
Die
Construct
Klasse wurde zusammen mit verwandten Typen aus der AWS CDK in eine separate Bibliothek extrahiert. Dies geschieht, um die Bemühungen zu unterstützen, das Construct-Programmiermodell auf andere Bereiche anzuwenden. Wenn Sie Ihre eigenen Konstrukte schreiben oder verwandte Konstrukte verwendenAPIs, müssen Sie dasconstructs
Modul als Abhängigkeit deklarieren und geringfügige Änderungen an Ihren Importen vornehmen. Wenn Sie erweiterte Funktionen verwenden, z. B. die Einbindung in den CDK App-Lebenszyklus, sind möglicherweise weitere Änderungen erforderlich. Vollständige Informationen finden Sie in der RFC. -
Veraltete Eigenschaften, Methoden und Typen in AWS CDK Version 1.x und der zugehörigen Construct-Bibliothek wurden vollständig aus Version 2 entfernt. CDK API In den meisten unterstützten Sprachen APIs erzeugen diese unter Version 1.x Warnungen, sodass Sie möglicherweise bereits auf die Ersatzversion migriert sind. APIs Eine vollständige Liste der APIs in CDK Version 1.x veralteten Versionen
finden Sie unter. GitHub -
Verhalten, das in AWS CDK Version 1.x durch Feature-Flags eingeschränkt wurde, ist in Version 2 standardmäßig aktiviert. CDK Die früheren Feature-Flags werden nicht mehr benötigt und in den meisten Fällen nicht unterstützt. Einige sind immer noch verfügbar, mit denen Sie unter ganz bestimmten Umständen zum CDK Verhalten von Version 1 zurückkehren können. Weitere Informationen finden Sie unter Feature-Flags aktualisieren.
-
Bei CDK Version 2 müssen die Umgebungen, in denen Sie die Bereitstellung durchführen, mithilfe des modernen Bootstrap-Stacks gebootet werden. Der ältere Bootstrap-Stack (der Standard unter Version 1) wird nicht mehr unterstützt. CDKv2 erfordert außerdem eine neue Version des modernen Stacks. Um Ihre vorhandenen Umgebungen zu aktualisieren, starten Sie sie neu. Es ist nicht mehr erforderlich, Feature-Flags oder Umgebungsvariablen festzulegen, um den modernen Bootstrap-Stack zu verwenden.
Wichtig
Die moderne Bootstrap-Vorlage gewährt effektiv jedem AWS Konto in der Liste die --cloudformation-execution-policies
damit verbundenen Berechtigungen. --trust
Standardmäßig werden dadurch die Lese- und Schreibberechtigungen für alle Ressourcen im Bootstrap-Konto erweitert. Stellen Sie sicher, dass Sie den Bootstrapping-Stack mit Richtlinien und vertrauenswürdigen Konten konfigurieren, mit denen Sie vertraut sind.
Neue Voraussetzungen
Die meisten Anforderungen für AWS CDK v2 sind dieselben wie für AWS CDK v1.x. Zusätzliche Anforderungen sind hier aufgeführt.
-
Für TypeScript Entwickler ist TypeScript Version 3.8 oder höher erforderlich.
-
Für die Verwendung mit Version CDK 2 ist eine neue Version des CDK Toolkits erforderlich. Jetzt, da CDK v2 allgemein verfügbar ist, ist v2 die Standardversion bei der Installation des CDK Toolkits. Es ist abwärtskompatibel mit CDK v1-Projekten, sodass Sie die frühere Version nicht installiert lassen müssen, es sei denn, Sie möchten v1-Projekte erstellen. CDK Um ein Upgrade durchzuführen, geben Sie es ein.
npm install -g aws-cdk
Aktualisierung von Version AWS CDK 2 Developer Preview
Wenn Sie die CDK v2 Developer Preview verwenden, besteht in Ihrem Projekt Abhängigkeiten von einer Release Candidate-Version von AWS CDK, z. 2.0.0-rc1
B. Aktualisieren Sie diese auf 2.0.0
und aktualisieren Sie dann die in Ihrem Projekt installierten Module.
Nachdem Sie Ihre Abhängigkeiten aktualisiert haben, geben Sie npm update -g aws-cdk
an, das CDK Toolkit auf die Release-Version zu aktualisieren.
Migration von AWS CDK Version 1 auf Version 2 CDK
Um Ihre App auf AWS CDK Version 2 zu migrieren, aktualisieren Sie zunächst die Feature-Flags incdk.json
. Aktualisieren Sie dann die Abhängigkeiten und Importe Ihrer App nach Bedarf für die Programmiersprache, in der sie geschrieben wurde.
Aktualisierung auf eine aktuelle Version 1
Wir sehen, dass eine Reihe von Kunden in einem Schritt von einer alten Version von AWS CDK v1 auf die neueste Version von v2 umsteigen. Das ist sicherlich möglich, aber Sie würden sowohl ein Upgrade über mehrere Jahre an Änderungen durchführen (die leider nicht alle denselben Umfang an Evolutionstests hatten wie heute) als auch ein Upgrade auf mehrere Versionen mit neuen Standardeinstellungen und einer anderen Codeorganisation durchführen würden.
Für das sicherste Upgrade-Erlebnis und um die Ursachen unerwarteter Änderungen einfacher zu diagnostizieren, empfehlen wir, diese beiden Schritte voneinander zu trennen: zuerst auf die neueste Version v1 aktualisieren und anschließend auf v2 umsteigen.
Feature-Flags aktualisieren
Entfernen Sie die folgenden v1-Feature-Flags, cdk.json
falls sie existieren, da diese in AWS CDK Version 2 standardmäßig alle aktiv sind. Wenn ihr alter Effekt für Ihre Infrastruktur wichtig ist, müssen Sie Änderungen am Quellcode vornehmen. Weitere Informationen finden Sie in der Liste der Flaggen auf GitHub
-
@aws-cdk/core:enableStackNameDuplicates
-
aws-cdk:enableDiffNoFail
-
@aws-cdk/aws-ecr-assets:dockerIgnoreSupport
-
@aws-cdk/aws-secretsmanager:parseOwnedSecretName
-
@aws-cdk/aws-kms:defaultKeyPolicies
-
@aws-cdk/aws-s3:grantWriteWithoutAcl
-
@aws-cdk/aws-efs:defaultEncryptionAtRest
Eine Handvoll v1-Feature-Flags können aktiviert werden, um zu bestimmten AWS CDK v1-Verhaltensweisen zurückzukehren. Eine vollständige Referenz finden Sie unter Zum Verhalten von Version 1 zurückkehren oder false
in der Liste unter. GitHub
Verwenden Sie für beide Arten von Flags den cdk diff
Befehl, um die Änderungen an Ihrer synthetisierten Vorlage zu überprüfen und festzustellen, ob sich die Änderungen an einem dieser Flags auf Ihre Infrastruktur auswirken.
CDKToolkit-Kompatibilität
CDKVersion 2 erfordert Version 2 oder höher des CDK Toolkits. Diese Version ist abwärtskompatibel mit v1-Apps. CDK Daher können Sie eine einzige global installierte Version von CDK Toolkit für all Ihre AWS CDK Projekte verwenden, unabhängig davon, ob sie v1 oder v2 verwenden. Eine Ausnahme ist, dass CDK Toolkit v2 nur v2-Projekte erstelltCDK.
Wenn Sie sowohl v1- als auch CDK v2-Projekte erstellen müssen, installieren Sie CDK Toolkit v2 nicht global. (Entfernen Sie es, falls Sie es bereits installiert haben:npm remove -g aws-cdk
.) Um das CDK Toolkit aufzurufen, verwenden Sie, npx um Version 1 oder V2 des CDK Toolkits wie gewünscht auszuführen.
npx aws-cdk@1.x init app --language typescript npx aws-cdk@2.x init app --language typescript
Tipp
Richten Sie Befehlszeilen-Aliase ein, damit Sie mit den cdk1 Befehlen cdk und die gewünschte Version des Toolkits aufrufen können. CDK
Abhängigkeiten und Importe aktualisieren
Aktualisieren Sie die Abhängigkeiten Ihrer App und installieren Sie dann die neuen Pakete. Aktualisieren Sie abschließend die Importe in Ihrem Code.
Testen Sie Ihre migrierte App vor der Bereitstellung
Verwenden Sie diese Option, um vor der Bereitstellung Ihrer Stacks cdk diff
nach unerwarteten Änderungen an den Ressourcen zu suchen. Logische Änderungen IDs (die zum Austausch von Ressourcen führen) sind nicht zu erwarten.
Zu den erwarteten Änderungen gehören unter anderem:
-
Änderungen an der
CDKMetadata
Ressource. -
Asset-Hashes wurden aktualisiert.
-
Änderungen im Zusammenhang mit der Stack-Synthese im neuen Stil. Gilt, wenn Ihre App den alten Stack-Synthesizer in Version 1 verwendet hat. (CDKv2 unterstützt den Legacy-Stack-Synthesizer nicht.)
-
Das Hinzufügen einer
CheckBootstrapVersion
Regel.
Unerwartete Änderungen werden normalerweise nicht durch das Upgrade auf AWS CDK Version 2 an sich verursacht. In der Regel sind sie das Ergebnis eines veralteten Verhaltens, das zuvor durch Feature-Flags geändert wurde. Dies ist ein Symptom für ein Upgrade von einer Version vor etwa CDK 1.85.x. Bei einem Upgrade auf die neueste Version v1.x würden Sie dieselben Änderungen feststellen. In der Regel können Sie dieses Problem wie folgt lösen:
-
Aktualisieren Sie Ihre App auf die neueste Version v1.x
-
Entfernen Sie Feature-Flags
-
Überarbeiten Sie Ihren Code nach Bedarf
-
Bereitstellen
-
Führen Sie ein Upgrade auf v2 durch
Anmerkung
Wenn Ihre aktualisierte App nach dem zweistufigen Upgrade nicht bereitgestellt werden kann, melden
Wenn Sie bereit sind, die Stacks in Ihrer App bereitzustellen, sollten Sie erwägen, zunächst eine Kopie bereitzustellen, damit Sie sie testen können. Der einfachste Weg, dies zu tun, besteht darin, es in einer anderen Region bereitzustellen. Sie können jedoch auch die IDs Anzahl Ihrer Stacks ändern. Stellen Sie nach dem Testen sicher, dass Sie die Testkopie mit cdk destroy vernichten.
Fehlerbehebung
TypeScript 'from' expected
oder ';' expected
Fehler bei Importen
Führen Sie ein Upgrade auf TypeScript 3.8 oder höher durch.
Führen Sie 'cdk bootstrap' aus
Wenn Sie einen Fehler wie den folgenden sehen:
❌ MyStack failed: Error: MyStack: 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) at CloudFormationDeployments.validateBootstrapStackVersion (.../aws-cdk/lib/api/cloudformation-deployments.ts:323:13) at processTicksAndRejections (internal/process/task_queues.js:97:5) MyStack: 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)
AWS CDK v2 erfordert einen aktualisierten Bootstrap-Stack, und außerdem benötigen alle v2-Bereitstellungen Bootstrap-Ressourcen. (Mit Version 1 könnten Sie einfache Stacks ohne Bootstrapping bereitstellen.) Vollständige Details finden Sie unter AWS CDK Bootstrapping.
V1-Stacks finden
Wenn Sie Ihre CDK Anwendung von Version 1 auf Version 2 migrieren, möchten Sie möglicherweise die bereitgestellten AWS CloudFormation Stacks identifizieren, die mit Version 1 erstellt wurden. Führen Sie dazu den folgenden Befehl aus:
npx awscdk-v1-stack-finder
Einzelheiten zur Verwendung finden Sie im awscdk-v1-stack-finder README