Dies ist das AWS CDK v2 Developer Guide. Für das ältere CDK v1 wurde am 1. Juni 2022 die Wartung abgeschlossen und der Support endete am 1. Juni 2023.
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.
AWS CDK CLI-Referenz
Das AWS Cloud Development Kit (AWS CDK) Command Line Interface (AWS CDK CLI), auch bekannt als CDK Toolkit, ist das primäre Tool für die Interaktion mit Ihrer CDK-App. AWS Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die vom CDK generierten Vorlagen bereit. AWS CloudFormation AWS Es bietet auch andere Funktionen, die für die Erstellung und Arbeit mit CDK-Projekten nützlich sind. AWS Dieses Thema enthält Informationen zu häufigen Anwendungsfällen der CDK-CLI.
Die CDK CLI wird mit dem Node Package Manager installiert. In den meisten Fällen empfehlen wir, es global zu installieren.
npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
Tipp
Wenn Sie regelmäßig mit mehreren Versionen des AWS CDK arbeiten, sollten Sie erwägen, in einzelnen CDK-Projekten eine passende Version der CDK-CLI zu installieren. Lassen Sie dazu den Befehl aus-g. npm install Verwenden Sie dannnpx aws-cdk, um ihn aufzurufen. Dadurch wird die lokale Version ausgeführt, falls eine existiert, und andernfalls wird auf eine globale Version zurückgegriffen.
CDK-CLI-Befehle
Alle CDK-CLI-Befehle beginnen mitcdk, worauf ein Unterbefehl (list, synthesizedeploy, usw.) folgt. Einige Unterbefehle haben eine kürzere Version (ls, usw.)synth, die gleichwertig ist. Optionen und Argumente folgen dem Unterbefehl in beliebiger Reihenfolge.
Eine Beschreibung aller Unterbefehle, Optionen und Argumente finden Sie in der AWS CDK CLI-Befehlsreferenz.
Geben Sie Optionen und ihre Werte an
Befehlszeilenoptionen beginnen mit zwei Bindestrichen ()--. Einige häufig verwendete Optionen enthalten Synonyme aus einem Buchstaben, die mit einem einzelnen Bindestrich beginnen (z. B. --app hat ein Synonym). -a Die Reihenfolge der Optionen in einem CDK-CLI-Befehl ist nicht wichtig.
Alle Optionen akzeptieren einen Wert, der dem Optionsnamen folgen muss. Der Wert kann durch Leerzeichen oder durch ein Gleichheitszeichen = vom Namen getrennt werden. Die folgenden beiden Optionen sind gleichwertig.
--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack
Bei einigen Optionen handelt es sich um Flaggen (Boolesche Werte). Sie können true oder false als ihren Wert angeben. Wenn Sie keinen Wert angeben, wird der Wert als angenommentrue. Sie können dem Optionsnamen auch ein Präfix voranstellenno-, um dies zu implizierenfalse.
# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false
Einige Optionen, nämlich--context, --parameters--plugin, und --tags--trust, können mehrmals angegeben werden, um mehrere Werte anzugeben. Diese sind in der CDK-CLI-Hilfe als [array] Typ vermerkt. Beispiel:
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
Built-in Hilfe
Die CDK-CLI hat eine integrierte Hilfe. Allgemeine Hilfe zum Tool und eine Liste der bereitgestellten Unterbefehle finden Sie, indem Sie Folgendes eingeben:
cdk --help
Wenn Sie beispielsweise die Hilfe für einen bestimmten Unterbefehl aufrufen möchtendeploy, geben Sie ihn vor dem --help Flag an.
cdk deploy --help
Problem cdk version beim Anzeigen der Version der CDK-CLI. Geben Sie diese Informationen an, wenn Sie Support anfordern.
Berichterstattung über Versionen
Um einen Einblick in die Verwendung des AWS CDK zu erhalten, werden die von AWS CDK-Anwendungen verwendeten Konstrukte gesammelt und anhand einer Ressource gemeldet, die als gekennzeichnet ist. AWS::CDK::Metadata Weitere Informationen finden Sie unter Konfigurieren der AWS CDK-Nutzungsdatenberichterstattung.
Authentifizierung mit AWS
Es gibt verschiedene Möglichkeiten, den programmgesteuerten Zugriff auf AWS Ressourcen zu konfigurieren, abhängig von der Umgebung und dem AWS Zugriff, der Ihnen zur Verfügung steht.
Informationen zur Auswahl Ihrer Authentifizierungsmethode und deren Konfiguration für die CDK-CLI finden Sie unter Sicherheitsanmeldeinformationen für die AWS CDK-CLI konfigurieren.
Für neue Benutzer, die sich lokal entwickeln und die von ihrem Arbeitgeber keine Authentifizierungsmethode erhalten, wird empfohlen, AWS IAM Identity Center einzurichten. Zu dieser Methode gehört die Installation der AWS CLI, um die Konfiguration zu vereinfachen und sich regelmäßig beim AWS Zugriffsportal anzumelden. Wenn Sie sich für diese Methode entscheiden, sollte Ihre Umgebung die folgenden Elemente enthalten, nachdem Sie das Verfahren für die IAM Identity Center-Authentifizierung im Referenzhandbuch für AWS SDKs und Tools abgeschlossen haben:
-
Die AWS CLI, mit der Sie eine AWS Access-Portal-Sitzung starten, bevor Sie Ihre Anwendung ausführen.
-
Eine gemeinsam genutzte AWS Konfigurationsdatei mit einem
[default]Profil mit einer Reihe von Konfigurationswerten, auf die vom AWS CDK aus verwiesen werden kann. Den Speicherort dieser Datei finden Sie unter Speicherort der gemeinsam genutzten Dateien im Referenzhandbuch für AWS SDKs und Tools. -
Die gemeinsam genutzte
configDatei legt die https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html Regionseinstellung fest. Dadurch wird die AWS Standardregion festgelegt, die das AWS CDK und die CDK-CLI für AWS Anfragen verwenden. -
Die CDK-CLI verwendet die Konfiguration des SSO-Token-Anbieters des Profils, um Anmeldeinformationen abzurufen, bevor Anfragen an sie gesendet werden. AWS Der
sso_role_nameWert, bei dem es sich um eine IAM-Rolle handelt, die mit einem IAM Identity Center-Berechtigungssatz verbunden ist, sollte den Zugriff auf die in Ihrer Anwendung verwendeten AWS Dienste ermöglichen.Die folgende
configBeispieldatei zeigt ein Standardprofil, das mit der Konfiguration des SSO-Token-Anbieters eingerichtet wurde. Diesso_sessionEinstellung des Profils bezieht sich auf den benanntensso-sessionAbschnitt. Dersso-sessionAbschnitt enthält Einstellungen zum Initiieren einer AWS Access-Portal-Sitzung.[default] sso_session = <my-sso> sso_account_id = <111122223333> sso_role_name = <SampleRole> region = <us-east-1> output = <json> [sso-session <my-sso>] sso_region = <us-east-1> sso_start_url = <https://provided-domain.awsapps.com/start> sso_registration_scopes = sso:account:access
Starten Sie eine AWS auf die Portalsitzung zugreifen
Bevor Sie auf AWS Dienste zugreifen, benötigen Sie eine aktive AWS Access-Portal-Sitzung, damit die CDK-CLI die IAM Identity Center-Authentifizierung zum Auflösen der Anmeldeinformationen verwenden kann. Abhängig von Ihrer konfigurierten Sitzungsdauer läuft Ihr Zugriff irgendwann ab und bei der CDK-CLI tritt ein Authentifizierungsfehler auf. Führen Sie den folgenden Befehl in der AWS CLI aus, um sich beim AWS Zugriffsportal anzumelden.
aws sso login
Wenn Ihre Konfiguration des SSO-Token-Anbieters ein benanntes Profil anstelle des Standardprofils verwendet, lautet der Befehlaws sso login --profile <NAME>. Geben Sie dieses Profil auch an, wenn Sie cdk Befehle mithilfe der --profile Option oder der AWS_PROFILE Umgebungsvariablen ausgeben.
Führen Sie den folgenden AWS CLI-Befehl aus, um zu testen, ob Sie bereits eine aktive Sitzung haben.
aws sts get-caller-identity
In der Antwort auf diesen Befehl sollten das in der freigegebenen config-Datei konfigurierte IAM-Identity-Center-Konto und der Berechtigungssatz angegeben werden.
Anmerkung
Wenn Sie bereits eine aktive AWS Access Portal-Sitzung haben und ausführenaws sso login, müssen Sie keine Anmeldeinformationen angeben.
Während des Anmeldevorgangs werden Sie möglicherweise aufgefordert, der AWS CLI den Zugriff auf Ihre Daten zu gewähren. Da die AWS CLI auf dem SDK für Python aufbaut, können Berechtigungsmeldungen Variationen des botocore Namens enthalten.
Geben Sie die Region und eine andere Konfiguration an
Die CDK-CLI muss die AWS Region kennen, in der Sie die Bereitstellung durchführen, und wissen, wie Sie sich authentifizieren. AWS Dies wird für Bereitstellungsvorgänge und zum Abrufen von Kontextwerten während der Synthese benötigt. Ihr Konto und Ihre Region bilden zusammen die Umgebung.
Die Region kann mithilfe von Umgebungsvariablen oder in Konfigurationsdateien angegeben werden. Dies sind dieselben Variablen und Dateien, die von anderen AWS Tools wie der AWS CLI und den verschiedenen AWS SDKs verwendet werden. Die CDK-CLI sucht in der folgenden Reihenfolge nach diesen Informationen.
-
Die
AWS_DEFAULT_REGION-Umgebungsvariable -
Ein benanntes Profil, das in der AWS
configStandarddatei definiert und mithilfe der--profilecdkBefehlsoption angegeben wird. -
Der
[default]Abschnitt der AWSconfigStandarddatei.
Neben der Angabe der AWS Authentifizierung und einer Region im [default] Abschnitt können Sie auch einen oder mehrere [profile <NAME>] Abschnitte hinzufügen, in denen der Name des Profils <NAME> steht. Weitere Informationen zu benannten Profilen finden Sie unter Gemeinsam genutzte Konfigurationsdateien und Anmeldeinformationen im Referenzhandbuch für AWS SDKs und Tools.
Die AWS
config Standarddatei befindet sich unter ~/.aws/config (macOS/Linux) oder %USERPROFILE%\.aws\config (Windows). Einzelheiten und alternative Speicherorte finden Sie unter Speicherort der gemeinsam genutzten Konfigurationsdateien und Anmeldeinformationen im Referenzhandbuch für AWS SDKs und Tools
Die Umgebung, die Sie in Ihrer AWS CDK-App mithilfe der env Eigenschaft des Stacks angeben, wird bei der Synthese verwendet. Sie wird verwendet, um eine umgebungsspezifische AWS CloudFormation Vorlage zu generieren, und während der Bereitstellung überschreibt sie das Konto oder die Region, die mit einer der oben genannten Methoden angegeben wurde. Weitere Informationen finden Sie unter Umgebungen für das CDK. AWS
Anmerkung
Das AWS CDK verwendet Anmeldeinformationen aus denselben Quelldateien wie andere AWS Tools und SDKs, einschließlich der AWS Befehlszeilenschnittstelle. Das AWS CDK verhält sich jedoch möglicherweise etwas anders als diese Tools. Es verwendet das AWS SDK für JavaScript unter der Haube. Vollständige Informationen zum Einrichten der Anmeldeinformationen für das AWS SDK für JavaScript finden Sie unter Anmeldeinformationen einrichten.
Sie können optional die Option --role-arn (oder-r) verwenden, um den ARN einer IAM-Rolle anzugeben, die für die Bereitstellung verwendet werden soll. Diese Rolle muss vom verwendeten AWS Konto übernommen werden können.
Geben Sie den Befehl app an
Für viele Funktionen der CDK-CLI müssen eine oder mehrere AWS CloudFormation Vorlagen synthetisiert werden, was wiederum die Ausführung Ihrer Anwendung erfordert. Das AWS CDK unterstützt Programme, die in einer Vielzahl von Sprachen geschrieben sind. Daher verwendet es eine Konfigurationsoption, um genau den Befehl anzugeben, der zum Ausführen Ihrer App erforderlich ist. Diese Option kann auf zwei Arten angegeben werden.
Erstens, und am häufigsten, kann sie mithilfe des app Schlüssels in der Datei angegeben werdencdk.json. Dieser befindet sich im Hauptverzeichnis Ihres AWS CDK-Projekts. Die CDK-CLI bietet einen entsprechenden Befehl, wenn Sie ein neues Projekt mit erstellen. cdk init Hier ist zum Beispiel das cdk.json von einem neuen TypeScript Projekt.
{ "app": "npx ts-node bin/hello-cdk.ts" }
Die CDK-CLI sucht cdk.json im aktuellen Arbeitsverzeichnis nach, wenn sie versucht, Ihre App auszuführen. Aus diesem Grund können Sie im Hauptverzeichnis Ihres Projekts eine Shell für die Ausgabe von CDK-CLI-Befehlen geöffnet lassen.
Die CDK-CLI sucht auch nach dem App-Schlüssel ~/.cdk.json (d. h. in Ihrem Home-Verzeichnis), falls er darin nicht gefunden werden kann. ./cdk.json Das Hinzufügen des App-Befehls hier kann nützlich sein, wenn Sie normalerweise mit CDK-Code in derselben Sprache arbeiten.
Wenn Sie sich in einem anderen Verzeichnis befinden oder Ihre App mit einem anderen Befehl als dem in ausführen möchtencdk.json, verwenden Sie die Option --app (oder-a), um ihn anzugeben.
cdk --app "npx ts-node bin/hello-cdk.ts" ls
Bei der Bereitstellung können Sie auch ein Verzeichnis angeben, das synthetisierte Cloud-Assemblys enthältcdk.out, z. B. als Wert von--app. Die angegebenen Stacks werden aus diesem Verzeichnis bereitgestellt; die App wird nicht synthetisiert.
Geben Sie Stapel an
Viele CDK-CLI-Befehle (z. B.cdk deploy) funktionieren mit Stacks, die in Ihrer App definiert sind. Wenn Ihre App nur einen Stack enthält, geht die CDK-CLI davon aus, dass Sie diesen meinen, wenn Sie keinen Stack explizit angeben.
Andernfalls müssen Sie den Stack oder die Stapel angeben, mit denen Sie arbeiten möchten. Sie können dies tun, indem Sie die gewünschten Stapel anhand der ID einzeln in der Befehlszeile angeben. Denken Sie daran, dass die ID der Wert ist, der durch das zweite Argument angegeben wird, wenn Sie den Stapel instanziieren.
cdk synth PipelineStack LambdaStack
Sie können auch Platzhalter verwenden, um IDs anzugeben, die einem Muster entsprechen.
-
?entspricht einem beliebigen einzelnen Zeichen -
*entspricht einer beliebigen Anzahl von Zeichen (*allein entspricht allen Stapeln) -
**entspricht allem in einer Hierarchie
Sie können auch die --all Option verwenden, um alle Stapel anzugeben.
Wenn Ihre App CDK-Pipelines verwendet, versteht die CDK-CLI Ihre Stacks und Stufen als Hierarchie. Außerdem entsprechen die --all Option und der * Platzhalter nur den Stacks der obersten Ebene. Um alle Stapel abzugleichen, verwenden Sie. ** Wird auch verwendet**, um alle Stapel innerhalb einer bestimmten Hierarchie anzugeben.
Wenn Sie Platzhalter verwenden, schließen Sie das Muster in Anführungszeichen ein oder maskieren Sie die Platzhalter mit. \ Wenn Sie dies nicht tun, versucht Ihre Shell möglicherweise, das Muster auf die Namen der Dateien im aktuellen Verzeichnis zu erweitern. Im besten Fall wird das nicht das tun, was Sie erwarten; im schlimmsten Fall könnten Sie Stacks bereitstellen, die Sie nicht beabsichtigt hatten. Dies ist unter Windows nicht unbedingt erforderlich, da Platzhalter cmd.exe nicht erweitert werden, ist aber dennoch eine gute Praxis.
cdk synth "*Stack" # PipelineStack, LambdaStack, etc. cdk synth 'Stack?' # StackA, StackB, Stack1, etc. cdk synth \* # All stacks in the app, or all top-level stacks in a CDK Pipelines app cdk synth '**' # All stacks in a CDK Pipelines app cdk synth 'PipelineStack/Prod/**' # All stacks in Prod stage in a CDK Pipelines app
Anmerkung
Die Reihenfolge, in der Sie die Stapel angeben, entspricht nicht unbedingt der Reihenfolge, in der sie verarbeitet werden. Die CDK-CLI berücksichtigt Abhängigkeiten zwischen Stacks, wenn sie die Reihenfolge festlegt, in der sie verarbeitet werden sollen. Nehmen wir zum Beispiel an, ein Stack verwendet einen Wert, der von einem anderen generiert wurde (z. B. den ARN einer Ressource, die im zweiten Stack definiert ist). In diesem Fall wird der zweite Stapel aufgrund dieser Abhängigkeit vor dem ersten synthetisiert. Sie können Abhängigkeiten zwischen Stacks manuell mithilfe der Stack-Methode hinzufügen.
addDependency()
Bootstrappen Sie Ihre AWS Umgebung
Für die Bereitstellung von Stacks mit dem CDK müssen spezielle AWS CDK-Ressourcen bereitgestellt werden. Der cdk bootstrap Befehl erstellt die erforderlichen Ressourcen für Sie. Sie müssen nur dann einen Bootstrap durchführen, wenn Sie einen Stack bereitstellen, der diese dedizierten Ressourcen benötigt. Einzelheiten finden Sie unter AWS CDK-Bootstrapping.
cdk bootstrap
Wenn der cdk bootstrap Befehl ohne Argumente ausgegeben wird, wie hier gezeigt, synthetisiert er die aktuelle App und führt ein Bootstrapping der Umgebungen durch, in denen die Stacks bereitgestellt werden. Wenn die App umgebungsunabhängige Stacks enthält, die nicht explizit eine Umgebung angeben, erfolgt ein Bootstrapping für das Standardkonto und die Region oder die angegebene Umgebung mit. --profile
Außerhalb einer App müssen Sie die Umgebung, für die ein Bootstrapping durchgeführt werden soll, explizit angeben. Sie können dies auch tun, um eine Umgebung zu booten, die nicht in Ihrer App oder Ihrem lokalen Profil angegeben ist. AWS Die Anmeldeinformationen müssen für das angegebene Konto und die angegebene Region konfiguriert sein (z. B. in~/.aws/credentials). Sie können ein Profil angeben, das die erforderlichen Anmeldeinformationen enthält.
cdk bootstrap <ACCOUNT-NUMBER>/<REGION> # e.g. cdk bootstrap 1111111111/us-east-1 cdk bootstrap --profile test 1111111111/us-east-1
Wichtig
Jede Umgebung (account/region Kombination), in der Sie einen solchen Stack bereitstellen, muss separat gebootet werden.
Möglicherweise fallen AWS Gebühren für das an, was das AWS CDK in den Bootstrapping-Ressourcen speichert. Wenn Sie ihn verwenden--bootstrap-customer-key, wird zusätzlich ein AWS KMS-Schlüssel erstellt, für den ebenfalls Gebühren pro Umgebung anfallen.
Anmerkung
In früheren Versionen der Bootstrap-Vorlage wurde standardmäßig ein KMS-Schlüssel erstellt. Um Gebühren zu vermeiden, verwenden Sie einen Re-Bootstrap. --no-bootstrap-customer-key
Anmerkung
CDK CLI v2 unterstützt nicht die ursprüngliche Bootstrap-Vorlage, die als Legacy-Vorlage bezeichnet wird und standardmäßig mit CDK v1 verwendet wird.
Wichtig
Die moderne Bootstrap-Vorlage gewährt effektiv jedem AWS Konto in der Liste die von der --cloudformation-execution-policies implizierten Berechtigungen. --trust Standardmäßig erweitert dies die Lese- und Schreibberechtigungen für alle Ressourcen im Bootstrapping-Konto. Stellen Sie sicher, dass Sie den Bootstrapping-Stack mit Richtlinien und vertrauenswürdigen Konten konfigurieren, mit denen Sie vertraut sind.
Erstellen Sie eine neue App
Um eine neue App zu erstellen, erstellen Sie ein Verzeichnis dafür und geben Sie dann innerhalb des Verzeichnisses den Befehl auscdk init.
mkdir my-cdk-app cd my-cdk-app cdk init <TEMPLATE> --language <LANGUAGE>
Die unterstützten Sprachen (<LANGUAGE>) sind:
| Code | Sprache |
|---|---|
|
|
TypeScript |
|
|
JavaScript |
|
|
Python |
|
|
Java |
|
|
C# |
|
|
Go |
<TEMPLATE>ist eine optionale Vorlage. Wenn die gewünschte Vorlage App ist, die Standardvorlage, können Sie sie weglassen. Die verfügbaren Vorlagen sind:
| Vorlage | Description |
|---|---|
|
|
Erstellt eine leere AWS CDK-App. |
|
|
Erstellt eine AWS CDK-App mit einem Stack, der eine Amazon SQS-Warteschlange und ein Amazon SNS-Thema enthält. |
Die Vorlagen verwenden den Namen des Projektordners, um Namen für Dateien und Klassen in Ihrer neuen App zu generieren.
Stapel auflisten
Um eine Liste der IDs der Stacks in Ihrer AWS CDK-Anwendung anzuzeigen, geben Sie einen der folgenden gleichwertigen Befehle ein:
cdk list cdk ls
Wenn Ihre Anwendung Kontinuierliche Integration und Bereitstellung (CI/CD) mithilfe von CDK Pipelines CDK-Pipelines-Stacks enthält, zeigt die CDK-CLI die Stacknamen entsprechend ihrer Position in der Pipeline-Hierarchie als Pfade an. (Zum BeispielPipelineStack, PipelineStack/Prod und.) PipelineStack/Prod/MyService
Wenn Ihre App viele Stapel enthält, können Sie die Stack-IDs der aufzulistenden Stacks ganz oder teilweise angeben. Weitere Informationen finden Sie unter Stapel angeben.
Fügen Sie das --long Flag hinzu, um weitere Informationen zu den Stacks anzuzeigen, einschließlich der Stacknamen und ihrer Umgebungen (AWS Konto und Region).
Synthetisieren Sie Stapel
Der cdk synthesize Befehl (fast immer abgekürztsynth) synthetisiert einen in Ihrer App definierten Stapel zu einer Vorlage. CloudFormation
cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
Anmerkung
Die CDK-CLI führt Ihre App tatsächlich aus und synthetisiert vor den meisten Vorgängen (z. B. beim Bereitstellen oder Vergleichen von Stacks) neue Vorlagen. Diese Vorlagen werden standardmäßig im Verzeichnis gespeichert. cdk.out Der cdk synth Befehl druckt einfach die generierten Vorlagen für einen oder mehrere angegebene Stapel.
Alle verfügbaren Optionen finden cdk synth --help Sie unter. Einige der am häufigsten verwendeten Optionen werden im folgenden Abschnitt behandelt.
Geben Sie Kontextwerte an
Verwenden Sie die -c Option --context oder, um Kontextwerte und das AWS CDK Laufzeitkontextwerte an Ihre CDK-App zu übergeben.
# specify a single context value cdk synth --context key=value MyStack # specify multiple context values (any number) cdk synth --context key1=value1 --context key2=value2 MyStack
Wenn Sie mehrere Stacks bereitstellen, werden die angegebenen Kontextwerte normalerweise an alle weitergegeben. Wenn Sie möchten, können Sie für jeden Stapel unterschiedliche Werte angeben, indem Sie dem Kontextwert den Stacknamen voranstellen.
# different context values for each stack cdk synth --context Stack1:key=value Stack2:key=value Stack1 Stack2
Geben Sie das Anzeigeformat an
Standardmäßig wird die synthetisierte Vorlage im YAML-Format angezeigt. Fügen Sie die --json Flagge hinzu, um sie stattdessen im JSON-Format anzuzeigen.
cdk synth --json MyStack
Geben Sie das Ausgabeverzeichnis an
Fügen Sie die Option --output (-o) hinzu, um die synthetisierten Vorlagen in ein anderes Verzeichnis als cdk.out zu schreiben.
cdk synth --output=~/templates
Stapel bereitstellen
Der cdk deploy Unterbefehl stellt einen oder mehrere angegebene Stacks für Ihr Konto bereit. AWS
cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
Anmerkung
Die CDK-CLI führt Ihre App aus und synthetisiert neue AWS CloudFormation Vorlagen, bevor Sie etwas bereitstellen. Daher können die meisten Befehlszeilenoptionen, mit denen Sie cdk synth (z. B.--context) verwenden können, auch zusammen verwendet werden. cdk deploy
Alle verfügbaren Optionen finden cdk deploy --help Sie unter. Einige der nützlichsten Optionen werden im folgenden Abschnitt behandelt.
Überspringen Sie die Synthese
Der cdk deploy Befehl synthetisiert normalerweise die Stacks Ihrer App vor der Bereitstellung, um sicherzustellen, dass die Bereitstellung die neueste Version Ihrer App widerspiegelt. Wenn Sie wissen, dass Sie Ihren Code seit Ihrem letzten Mal nicht geändert habencdk synth, können Sie den redundanten Syntheseschritt bei der Bereitstellung unterdrücken. Geben Sie dazu in der --app Option das cdk.out Verzeichnis Ihres Projekts an.
cdk deploy --app cdk.out StackOne StackTwo
Deaktivieren Sie das Rollback
AWS CloudFormation hat die Fähigkeit, Änderungen rückgängig zu machen, sodass Bereitstellungen atomar sind. Das bedeutet, dass sie als Ganzes entweder erfolgreich sind oder scheitern. Das AWS CDK erbt diese Fähigkeit, weil es Vorlagen synthetisiert und bereitstellt. AWS CloudFormation
Rollback stellt sicher, dass sich Ihre Ressourcen jederzeit in einem konsistenten Zustand befinden, was für Produktions-Stacks von entscheidender Bedeutung ist. Während Sie Ihre Infrastruktur jedoch noch entwickeln, sind einige Ausfälle unvermeidlich, und das Rollback fehlgeschlagener Bereitstellungen kann Sie verlangsamen.
Aus diesem Grund können Sie mit der CDK-CLI das Rollback deaktivieren, indem Sie Ihrem Befehl etwas --no-rollback hinzufügen. cdk deploy Mit diesem Flag wird für fehlgeschlagene Bereitstellungen kein Rollback durchgeführt. Stattdessen bleiben die Ressourcen, die vor der ausgefallenen Ressource bereitgestellt wurden, unverändert, und die nächste Bereitstellung beginnt mit der ausgefallenen Ressource. Sie werden viel weniger Zeit damit verbringen, auf Bereitstellungen zu warten, und viel mehr Zeit damit verbringen, Ihre Infrastruktur zu entwickeln.
Hot-Swapping
Verwenden Sie das --hotswap Flag withcdk deploy, um zu versuchen, Ihre AWS Ressourcen direkt zu aktualisieren, anstatt einen AWS CloudFormation Änderungssatz zu generieren und ihn bereitzustellen. Die Bereitstellung wird auf die AWS CloudFormation Bereitstellung zurückgesetzt, wenn ein Hot-Swapping nicht möglich ist.
Derzeit unterstützt Hot-Swapping Lambda-Funktionen, Step Functions-Zustandsmaschinen und Amazon ECS-Container-Images. Das --hotswap Flag deaktiviert auch Rollback (d. h. impliziert). --no-rollback
Wichtig
Hot-swapping wird nicht für Produktionsbereitstellungen empfohlen.
Modus „Ansehen“
Der Watch-Modus (cdk deploy --watchoder cdk watch kurz) der CDK-CLI überwacht kontinuierlich die Quelldateien und Assets Ihrer CDK-App auf Änderungen. Es führt sofort eine Bereitstellung der angegebenen Stacks durch, wenn eine Änderung erkannt wird.
Standardmäßig verwenden diese Bereitstellungen das --hotswap Flag, das die Implementierung von Änderungen an Lambda-Funktionen beschleunigt. Es wird auch auf die Bereitstellung durch zurückgegriffen, AWS CloudFormation wenn Sie die Infrastrukturkonfiguration geändert haben. Wenn Sie cdk watch immer vollständige AWS CloudFormation Bereitstellungen durchführen möchten, fügen Sie das --no-hotswap Kennzeichen zu cdk watch hinzu.
Alle Änderungen, die während cdk watch der Ausführung einer Bereitstellung vorgenommen werden, werden zu einer einzigen Bereitstellung zusammengefasst, die beginnt, sobald die laufende Bereitstellung abgeschlossen ist.
Im Überwachungsmodus wird anhand der "watch" Schlüssel in den Projekten bestimmtcdk.json, welche Dateien überwacht werden sollen. Standardmäßig handelt es sich bei diesen Dateien um Ihre Anwendungsdateien und Ressourcen. Dies kann jedoch geändert werden, indem Sie die "exclude" Einträge "include" und im "watch" Schlüssel ändern. Die folgende cdk.json Datei zeigt ein Beispiel für diese Einträge.
{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }
cdk watchführt den "build" Befehl von auscdk.json, um Ihre App vor der Synthese zu erstellen. Wenn Ihre Bereitstellung Befehle zum Erstellen oder Verpacken Ihres Lambda-Codes (oder für etwas anderes, das nicht in Ihrer CDK-App enthalten ist) erfordert, fügen Sie ihn hier hinzu.
Git-style Platzhalter, sowohl als auch**, können in den Schlüsseln * und verwendet werden. "watch" "build" Jeder Pfad wird relativ zum übergeordneten Verzeichnis von cdk.json interpretiert. Der Standardwert von include ist**/*, d. h. alle Dateien und Verzeichnisse im Stammverzeichnis des Projekts. excludeist optional.
Wichtig
Der Watch-Modus wird für Produktionsbereitstellungen nicht empfohlen.
Spezifizieren AWS CloudFormation Parameter
Die CDK-CLI unterstützt die Angabe von AWS CloudFormation Parametern bei der Bereitstellung. Sie können diese in der Befehlszeile nach dem --parameters Flag angeben.
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
Um mehrere Parameter zu definieren, verwenden Sie mehrere --parameters Flags.
cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket
Wenn Sie mehrere Stapel bereitstellen, können Sie für jeden Stack einen anderen Wert für jeden Parameter angeben. Stellen Sie dazu dem Namen des Parameters den Stacknamen und einen Doppelpunkt voran. Andernfalls wird allen Stacks derselbe Wert übergeben.
cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket
Standardmäßig behält das AWS CDK Parameterwerte aus früheren Bereitstellungen bei und verwendet sie in späteren Bereitstellungen, sofern sie nicht explizit angegeben werden. Verwenden Sie das --no-previous-parameters Flag, wenn alle Parameter angegeben werden müssen.
Geben Sie die Ausgabedatei an
Wenn Ihr Stack AWS CloudFormation Ausgaben deklariert, werden diese normalerweise nach Abschluss der Bereitstellung auf dem Bildschirm angezeigt. Um sie in eine Datei im JSON-Format zu schreiben, verwenden Sie das --outputs-file Flag.
cdk deploy --outputs-file outputs.json MyStack
Genehmigen Sie sicherheitsrelevante Änderungen
Um Sie vor unbeabsichtigten Änderungen zu schützen, die sich auf Ihre Sicherheitslage auswirken könnten, fordert Sie die CDK CLI standardmäßig auf, sicherheitsrelevante Änderungen zu genehmigen, bevor Sie sie bereitstellen. Sie können den Grad der Änderung angeben, für die eine Genehmigung erforderlich ist:
cdk deploy --require-approval <LEVEL>
<LEVEL> kann einer der folgenden sein:
| Begriff | Bedeutung |
|---|---|
|
|
Eine Genehmigung ist niemals erforderlich |
|
|
Für jede Änderung am Stack ist eine Genehmigung erforderlich |
|
|
Erfordert eine Genehmigung, wenn Änderungen eine Erweiterung der Berechtigungen oder Sicherheitsgruppenregeln beinhalten |
Die Einstellung kann auch in der cdk.json Datei konfiguriert werden.
{ "app": "...", "requireApproval": "never" }
Stapel vergleichen
Der cdk diff Befehl vergleicht die aktuelle Version eines in Ihrer App definierten Stacks (und seiner Abhängigkeiten) mit den bereits bereitgestellten Versionen oder mit einer gespeicherten AWS CloudFormation Vorlage und zeigt eine Liste der Änderungen an.
Stack HelloCdkStack IAM Statement Changes ┌───┬──────────────────────────────┬────────┬──────────────────────────────┬──────────────────────────────┬───────────┐ │ │ Resource │ Effect │ Action │ Principal │ Condition │ ├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${Custom::S3AutoDeleteObject │ Allow │ sts:AssumeRole │ Service:lambda.amazonaws.com │ │ │ │ sCustomResourceProvider/Role │ │ │ │ │ │ │ .Arn} │ │ │ │ │ ├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${MyFirstBucket.Arn} │ Allow │ s3:DeleteObject* │ {aws}:${Custom::S3AutoDeleteOb │ │ │ │ ${MyFirstBucket.Arn}/* │ │ s3:GetBucket* │ jectsCustomResourceProvider/ │ │ │ │ │ │ s3:GetObject* │ Role.Arn} │ │ │ │ │ │ s3:List* │ │ │ └───┴──────────────────────────────┴────────┴──────────────────────────────┴──────────────────────────────┴───────────┘ IAM Policy Changes ┌───┬────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐ │ │ Resource │ Managed Policy ARN │ ├───┼────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Ro │ {"Fn::Sub":"arn:${{aws}::Partition}:iam::aws:policy/serv │ │ │ le} │ ice-role/AWSLambdaBasicExecutionRole"} │ └───┴────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘ (NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299) Parameters [+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3Bucket AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F: {"Type":"String","Description":"S3 bucket for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""} [+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3VersionKey AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626: {"Type":"String","Description":"S3 key for asset version \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""} [+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/ArtifactHash AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A: {"Type":"String","Description":"Artifact hash for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""} Resources [+] {aws}::S3::BucketPolicy MyFirstBucket/Policy MyFirstBucketPolicy3243DEFD [+] Custom::S3AutoDeleteObjects MyFirstBucket/AutoDeleteObjectsCustomResource MyFirstBucketAutoDeleteObjectsCustomResourceC52FCF6E [+] {aws}::IAM::Role Custom::S3AutoDeleteObjectsCustomResourceProvider/Role CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092 [+] {aws}::Lambda::Function Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F [~] {aws}::S3::Bucket MyFirstBucket MyFirstBucketB8884501 ├─ [~] DeletionPolicy │ ├─ [-] Retain │ └─ [+] Delete └─ [~] UpdateReplacePolicy ├─ [-] Retain └─ [+] Delete
So vergleichen Sie die Stacks Ihrer App mit der vorhandenen Bereitstellung:
cdk diff MyStack
So vergleichen Sie die Stacks Ihrer App mit einer gespeicherten CloudFormation Vorlage:
cdk diff --template ~/stacks/MyStack.old MyStack
Importiere vorhandene Ressourcen in einen Stack
Sie können den cdk import Befehl verwenden, um Ressourcen CloudFormation für einen bestimmten AWS CDK-Stack unter die Verwaltung zu stellen. Dies ist nützlich, wenn Sie zu AWS CDK migrieren oder Ressourcen zwischen Stapeln verschieben oder ihre logische ID ändern. Verwendet Ressourcenimporte. cdk import CloudFormation Die Liste der Ressourcen, die importiert werden können, finden Sie hier.
Gehen Sie wie folgt vor, um eine vorhandene Ressource in einen AWS CDK-Stack zu importieren:
-
Stellen Sie sicher, dass die Ressource derzeit von keinem anderen CloudFormation Stack verwaltet wird. Ist dies der Fall, legen Sie zunächst die Entfernungsrichtlinie auf den Stapel fest,
RemovalPolicy.RETAINin dem sich die Ressource gerade befindet, und führen Sie eine Bereitstellung durch. Entfernen Sie dann die Ressource aus dem Stapel und führen Sie eine weitere Bereitstellung durch. Durch diesen Prozess wird sichergestellt, dass die Ressource nicht mehr von ihr verwaltet wird, sie CloudFormation aber nicht gelöscht wird. -
Führen Sie a aus
cdk diff, um sicherzustellen, dass keine ausstehenden Änderungen am AWS CDK-Stack, in den Sie Ressourcen importieren möchten, ausstehen. Die einzigen Änderungen, die bei einem „Import“ -Vorgang zulässig sind, sind das Hinzufügen neuer Ressourcen, die Sie importieren möchten. -
Fügen Sie Konstrukte für die Ressourcen hinzu, die Sie in Ihren Stack importieren möchten. Wenn Sie beispielsweise einen Amazon S3-Bucket importieren möchten, fügen Sie etwas hinzu wie
new s3.Bucket(this, 'ImportedS3Bucket', {});. Nehmen Sie keine Änderungen an einer anderen Ressource vor.Sie müssen auch sicherstellen, dass der Status, den die Ressource derzeit hat, in der Definition exakt modelliert wird. Stellen Sie beim Beispiel des Buckets sicher, dass Sie AWS KMS-Schlüssel, Lebenszyklusrichtlinien und alles andere, was für den Bucket relevant ist, mit einbeziehen. Wenn Sie dies nicht tun, werden nachfolgende Aktualisierungsvorgänge möglicherweise nicht Ihren Erwartungen entsprechen.
Sie können wählen, ob Sie den Namen des physischen Buckets angeben möchten oder nicht. Wir empfehlen in der Regel, keine Ressourcennamen in Ihre AWS CDK-Ressourcendefinitionen aufzunehmen, damit es einfacher wird, Ihre Ressourcen mehrfach bereitzustellen.
-
Führen Sie
cdk import <STACKNAME>. -
Wenn die Ressourcennamen nicht in Ihrem Modell enthalten sind, werden Sie von der CLI aufgefordert, die tatsächlichen Namen der Ressourcen, die Sie importieren, einzugeben. Danach beginnt der Import.
-
Wenn ein Erfolg
cdk importgemeldet wird, wird die Ressource jetzt von AWS CDK und CloudFormation verwaltet. Alle nachfolgenden Änderungen, die Sie an den Ressourceneigenschaften in Ihrer AWS CDK-App vornehmen, werden in der Construct-Konfiguration auf die nächste Bereitstellung angewendet. -
Um zu bestätigen, dass die Ressourcendefinition in Ihrer AWS CDK-App dem aktuellen Status der Ressource entspricht, können Sie eine CloudFormation Drift-Erkennung starten.
Diese Funktion unterstützt derzeit nicht den Import von Ressourcen in verschachtelte Stapel.
Konfiguration (cdk.json)
Standardwerte für viele CDK-CLI-Befehlszeilen-Flags können in einer cdk.json Projektdatei oder in der .cdk.json Datei in Ihrem Benutzerverzeichnis gespeichert werden. Im Folgenden finden Sie eine alphabetische Referenz zu den unterstützten Konfigurationseinstellungen.
| Key (Schlüssel) | Hinweise | CDK-CLI-Option |
|---|---|---|
|
|
Der Befehl, der die CDK-Anwendung ausführt. |
|
|
|
Wenn |
|
|
|
Überschreibt die ID des AWS KMS-Schlüssels, der zum Verschlüsseln des Amazon S3-Bereitstellungs-Buckets verwendet wird. |
|
|
|
Der Befehl, der die CDK-Anwendung vor der Synthese kompiliert oder erstellt. Nicht zugelassen. |
|
|
|
Der Befehl zum Starten eines Webbrowsers für den |
|
|
|
Siehe Kontextwerte und das AWS CDK. Kontextwerte in einer Konfigurationsdatei werden von nicht gelöscht. |
|
|
|
Wenn |
|
|
|
Die Sprache, die für die Initialisierung neuer Projekte verwendet werden soll. |
|
|
|
Wenn |
|
|
|
Wenn |
|
|
|
Der Name des Verzeichnisses, in das die synthetisierte Cloud-Assembly ausgegeben wird (Standard). |
|
|
|
Die Datei, in die AWS CloudFormation Ausgaben von bereitgestellten Stacks geschrieben werden (im |
|
|
|
Wenn |
|
|
|
JSON-Array, das die Paketnamen oder lokalen Pfade von Paketen angibt, die das CDK erweitern |
|
|
|
Name des AWS Standardprofils, das für die Angabe von Regions- und Kontoanmeldeinformationen verwendet wird. |
|
|
|
Wenn diese Option auf gesetzt ist |
|
|
|
Standard-Genehmigungsstufe für Änderungen, die eine manuelle Genehmigung erfordern. Siehe Genehmigen sicherheitsbezogener Änderungen. |
|
|
|
Falls |
|
|
|
Wenn |
|
|
|
|
|
|
|
Der Name des Amazon S3-Buckets, der für die Bereitstellung von Ressourcen wie Lambda-Funktionen und Container-Images verwendet wird (siehe Bootstrap Ihrer Umgebung). AWS |
|
|
|
Der Name des Bootstrap-Stacks (siehe Bootstrapping Ihrer Umgebung). AWS |
|
|
|
Wenn |
|
|
|
JSON-Objekt, das |
|