Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
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 CDK Version 2 sind wie folgt. AWS 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, gelten immer als stabil AWS CloudFormation 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 der API ohne das Suffix wird hinzugefügt, wenn die API als stabil eingestuft 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 die API fertiggestellt 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 der API wechseln. 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 verwenden APIs, 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 Sieim RFC. -
Veraltete Eigenschaften, Methoden und Typen in AWS CDK v1.x und der zugehörigen Construct-Bibliothek wurden vollständig aus der CDK v2-API entfernt. In den meisten unterstützten Sprachen APIs erzeugen diese unter v1.x Warnungen, sodass Sie möglicherweise bereits auf die Ersatzversion migriert sind. APIs Eine vollständige Liste der APIs in CDK v1.x veralteten Versionen
finden Sie unter. GitHub -
Verhalten, das in AWS CDK Version 1.x durch Feature-Flags eingeschränkt wurde, ist in CDK v2 standardmäßig aktiviert. Die früheren Feature-Flags werden nicht mehr benötigt und werden in den meisten Fällen nicht unterstützt. Einige sind immer noch verfügbar, mit denen Sie unter ganz bestimmten Umständen zum Verhalten von CDK v1 zurückkehren können. Weitere Informationen finden Sie unter Feature-Flags aktualisieren.
-
Bei CDK v2 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. CDK v2 benötigt außerdem eine neue Version des modernen Stacks. Um Ihre bestehenden 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 Version 2 sind dieselben wie für AWS CDK Version 1.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 CDK v2 ist eine neue Version des CDK Toolkits erforderlich. Da CDK v2 nun 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 CDK v1-Projekte erstellen. Um ein Upgrade durchzuführen, geben Sie es ein.
npm install -g aws-cdk
Upgrade von Version AWS CDK 2 Developer Preview
Wenn Sie die CDK v2 Developer Preview verwenden, gibt es in Ihrem Projekt Abhängigkeiten von einer Release Candidate-Version von AWS CDK, wie 2.0.0-rc1
z. Aktualisieren Sie diese auf 2.0.0
und aktualisieren Sie dann die in Ihrem Projekt installierten Module.
npm install
oder yarn install
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 zu CDK Version 2
Um Ihre App auf AWS CDK Version 2 zu migrieren, aktualisieren Sie zunächst die Feature-Flags in. cdk.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 Rückkehr zum Verhalten von Version 1 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.
Kompatibilität mit dem CDK Toolkit
CDK v2 erfordert Version 2 oder höher des CDK Toolkits. Diese Version ist abwärtskompatibel mit CDK v1-Apps. 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 CDK v2-Projekte erstellt.
Wenn Sie sowohl v1- als auch v2-CDK-Projekte erstellen müssen, installieren Sie CDK Toolkit v2 nicht global. (Entferne es, falls du es bereits installiert hast:.) 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
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.
Anwendungen
Aktualisieren Sie CDK-Apps package.json
wie folgt. Entfernen Sie Abhängigkeiten von einzelnen stabilen Modulen im v1-Stil und richten Sie die niedrigste Version ein, die aws-cdk-lib
Sie für Ihre Anwendung benötigen (2.0.0 hier).
Experimentelle Konstrukte werden in separaten, unabhängig versionierten Paketen bereitgestellt, deren Namen auf alpha
und einer Alpha-Versionsnummer enden. Die Alpha-Versionsnummer entspricht der ersten Version, aws-cdk-lib
mit der sie kompatibel sind. Hier haben wir an v2.0.0-alpha.1 aws-codestar
gepinnt.
{
"dependencies": {
"aws-cdk-lib": "^2.0.0",
"@aws-cdk/aws-codestar-alpha": "2.0.0-alpha.1",
"constructs": "^10.0.0"
}
}
Konstruieren Sie Bibliotheken
Stellen Sie für Construct-Bibliotheken die niedrigste Version fest, die aws-cdk-lib
Sie für Ihre Anwendung benötigen (2.0.0 hier), und aktualisieren Sie package.json
sie wie folgt.
Beachten Sie, dass dies sowohl als Peer-Abhängigkeit als auch als Dev-Abhängigkeit aws-cdk-lib
erscheint.
{
"peerDependencies": {
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0"
},
"devDependencies": {
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0",
"typescript": "~3.9.0"
}
}
Anmerkung
Sie sollten bei der Veröffentlichung einer v2-kompatiblen Bibliothek eine größere Versionserhöhung an der Versionsnummer Ihrer Bibliothek vornehmen, da dies eine bahnbrechende Änderung für Bibliotheksnutzer ist. Es ist nicht möglich, sowohl CDK v1 als auch CDK v2 mit einer einzigen Bibliothek zu unterstützen. Um Kunden, die immer noch Version 1 verwenden, weiterhin zu unterstützen, könnten Sie die frühere Version parallel verwalten oder ein neues Paket für Version 2 erstellen.
Es liegt an Ihnen, wie lange Sie Kunden der Version 1 weiterhin AWS CDK unterstützen möchten. Sie könnten sich am Lebenszyklus von CDK v1 selbst orientieren, das am 1. Juni 2022 in die Wartung aufgenommen wurde und end-of-life am 1. Juni 2023 enden wird. Vollständige Informationen finden Sie unter AWS CDK
Wartungsrichtlinie
Sowohl Bibliotheken als auch Apps
Installieren Sie die neuen Abhängigkeiten, indem Sie npm install
oder ausführenyarn install
.
Ändern Sie Ihre Importe so, dass sie Construct
aus dem neuen constructs
Modul, Kerntypen wie App
und Stack
aus der obersten Ebene von und stabilen Construct-Library-Modulen für die Diensteaws-cdk-lib
, die Sie aus den Namespaces unter verwenden, importieren. aws-cdk-lib
import { Construct } from 'constructs';
import { App, Stack } from 'aws-cdk-lib'; // core constructs
import { aws_s3 as s3 } from 'aws-cdk-lib'; // stable module
import * as codestar from '@aws-cdk/aws-codestar-alpha'; // experimental module
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, ohne darauf beschränkt zu sein:
-
Ä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.
-
Das Hinzufügen einer
CheckBootstrapVersion
Regel.
Unerwartete Änderungen werden in der Regel 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 CDK-Version vor etwa 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 in der README-Datei awscdk-v1-stack-finder.