View a markdown version of this page

AWS CDK CLI-Referenz - AWS Cloud-Entwicklungskit (AWS CDK) v2

Das ist der AWS CDK v2-Entwicklerhandbuch. Für das ältere CDK v1 wurde am 1. Juni 2022 der Wartungsservice aufgenommen 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

Die AWS Cloud-Entwicklungskit (AWS CDK) Befehlszeilenschnittstelle (AWS CDK (CLI), auch bekannt als CDK Toolkit, ist das primäre Tool für die Interaktion mit Ihrem AWS CDK-App. Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und implementiert das AWS CloudFormation Vorlagen, die von der generiert wurden AWS CDK. Es bietet auch andere Funktionen, die für das Erstellen und Arbeiten mit ihnen nützlich sind AWS CDK-Projekte. 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 arbeiten AWS CDK, erwägen Sie, eine passende Version der CDK-CLI in einzelnen CDK-Projekten zu installieren. Lassen Sie dazu Folgendes aus -g von der npm install Befehl. Dann benutze npx aws-cdk um es 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 mit cdk, worauf ein Unterbefehl folgt (list, synthesize, deploy, usw.). Einige Unterbefehle haben eine kürzere Version (ls, synthusw.) das ist gleichwertig. Optionen und Argumente folgen dem Unterbefehl in beliebiger Reihenfolge.

Eine Beschreibung aller Unterbefehle, Optionen und Argumente finden Sie unter AWS CDK CLI-Befehlsreferenz.

Geben Sie Optionen und ihre Werte an

Befehlszeilenoptionen beginnen mit zwei Bindestrichen (--). Einige häufig verwendete Optionen haben 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 angeben true oder false als ihren Wert. Wenn Sie keinen Wert angeben, wird der Wert als true. Sie können dem Optionsnamen auch das Präfix voranstellen no- zu implizieren false.

# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false

Ein paar Optionen, nämlich --context, --parameters, --plugin, --tags, und --trust, kann mehrmals angegeben werden, um mehrere Werte anzugeben. Es wird darauf hingewiesen, dass diese [array] geben Sie die CDK-CLI-Hilfe ein. 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

Um die Hilfe für einen bestimmten Unterbefehl anzuzeigen, zum Beispiel deploy, spezifizieren Sie es vor dem --help Flagge.

cdk deploy --help

Problem cdk version um die Version der CDK-CLI anzuzeigen. Geben Sie diese Informationen an, wenn Sie Support anfordern.

Berichterstattung über Versionen

Um einen Einblick zu erhalten, wie AWS CDK wird verwendet, die Konstrukte von AWS CDK-Anwendungen werden mithilfe einer Ressource erfasst und gemeldet, die als AWS::CDK::Metadata. Weitere Informationen finden Sie unter Konfigurieren AWS Berichterstattung über CDK-Nutzungsdaten.

Authentifizierung mit AWS

Es gibt verschiedene Möglichkeiten, den programmatischen Zugriff zu konfigurieren AWS Ressourcen, abhängig von der Umgebung und AWS Zugriff, der Ihnen zur Verfügung steht.

Informationen zur Auswahl Ihrer Authentifizierungsmethode und deren Konfiguration für die CDK-CLI finden Sie unter Konfigurieren Sie die Sicherheitsanmeldeinformationen für AWS CDK CLI.

Für neue Benutzer, die sich lokal entwickeln und die von ihrem Arbeitgeber keine Authentifizierungsmethode erhalten, wird empfohlen, Folgendes einzurichten AWS IAM Identity Center. Diese Methode beinhaltet die Installation von AWS CLI zur einfachen Konfiguration und zur regelmäßigen Anmeldung beim AWS auf das Portal zugreifen. Wenn Sie diese Methode wählen, sollte Ihre Umgebung die folgenden Elemente enthalten, nachdem Sie das Verfahren für abgeschlossen haben IAM Identity Center-Authentifizierung in der AWS Referenzhandbuch für SDKs und Tools:

  • Das AWS CLI, mit der Sie eine starten AWS Greifen Sie auf die Portalsitzung zu, bevor Sie Ihre Anwendung ausführen.

  • EIN geteilt AWS Konfigurationsdatei mit einem [default] Profil mit einer Reihe von Konfigurationswerten, auf die aus dem verwiesen werden kann AWS CDK. Den Speicherort dieser Datei finden Sie unter Speicherort der geteilten Dateien in der AWS Referenzhandbuch für SDKs und Tools.

  • Das Geteilte config Datei legt fest Region Einstellung. Dies legt den Standard fest AWS Region der AWS CDK und CDK CLI verwenden für AWS Anfragen.

  • Die CDK-CLI verwendet das Profil Konfiguration des SSO-Token-Anbieters um Anmeldeinformationen abzurufen, bevor Anfragen an gesendet werden AWS. Das sso_role_name Der Wert, bei dem es sich um eine IAM-Rolle handelt, die mit einem IAM Identity Center-Berechtigungssatz verbunden ist, sollte den Zugriff auf den ermöglichen AWS Dienste, die in Ihrer Anwendung verwendet werden.

    Das folgende Beispiel config Die Datei zeigt ein Standardprofil, das mit der Konfiguration des SSO-Token-Anbieters eingerichtet wurde. Das Profil ist sso_session Die Einstellung bezieht sich auf den Namen sso-session Abschnitt. Das sso-session Abschnitt enthält Einstellungen zum Initiieren einer AWS auf die Portalsitzung zugreifen.

    [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

Vor dem Zugriff AWS Dienste, Sie benötigen eine aktive AWS Greifen Sie auf die Portalsitzung für die CDK-CLI zu, um die IAM Identity Center-Authentifizierung zum Auflösen der Anmeldeinformationen zu verwenden. 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, um sich bei der anzumelden AWS auf das Portal zugreifen.

aws sso login

Wenn Ihre Konfiguration des SSO-Token-Anbieters ein benanntes Profil anstelle des Standardprofils verwendet, lautet der Befehl aws sso login --profile <NAME>. Geben Sie dieses Profil auch bei der Ausgabe an cdk Befehle mit dem --profile Option oder AWS_PROFILE Umgebungsvariable.

Führen Sie den folgenden Befehl aus, um zu testen, ob Sie bereits eine aktive Sitzung haben AWS CLI-Befehl.

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 haben AWS auf die Portalsitzung zugreifen und ausführen aws sso login, Sie müssen keine Anmeldeinformationen angeben.

Während des Anmeldevorgangs werden Sie möglicherweise aufgefordert, Folgendes zuzulassen AWS CLI-Zugriff auf Ihre Daten. Seit dem AWS CLI basiert auf dem SDK für Python, Berechtigungsnachrichten können Variationen des botocore Name.

Region und andere Konfiguration angeben

Die CDK-CLI muss das kennen AWS Region, in der Sie die Bereitstellung durchführen, und 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 Umwelt.

Die Region kann mithilfe von Umgebungsvariablen oder in Konfigurationsdateien angegeben werden. Dies sind dieselben Variablen und Dateien, die von anderen verwendet werden AWS Tools wie die AWS CLI und die verschiedenen AWS SDKs. Die CDK-CLI sucht in der folgenden Reihenfolge nach diesen Informationen.

  • Die AWS_DEFAULT_REGION-Umgebungsvariable

  • Ein benanntes Profil, das im Standard definiert ist AWS config Datei und spezifiziert mit der --profile Option ein cdk Befehle.

  • Die [default] Abschnitt des Standards AWS config datei.

Neben der Angabe AWS Authentifizierung und eine Region in der [default] Abschnitt, Sie können auch einen oder mehrere hinzufügen [profile <NAME>] Abschnitte, wo <NAME> ist der Name des Profils. Weitere Hinweise zu benannten Profilen finden Sie unter Gemeinsam genutzte Konfigurationsdateien und Anmeldeinformationsdateien in der AWS Referenzhandbuch für SDKs und Tools.

Der Standard AWS config Die Datei 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 Anmeldeinformationsdateien in der AWS Referenzhandbuch für SDKs und Tools

Die Umgebung, die Sie in Ihrem angeben AWS CDK-App unter Verwendung des Stacks env Diese Eigenschaft wird bei der Synthese verwendet. Es wird verwendet, um eine umgebungsspezifische AWS CloudFormation Vorlage, und während der Bereitstellung überschreibt sie das Konto oder die Region, das mit einer der oben genannten Methoden angegeben wurde. Weitere Informationen finden Sie unter Umgebungen für die AWS CDK.

Anmerkung

Das AWS CDK verwendet Anmeldeinformationen aus denselben Quelldateien wie andere AWS Tools und SDKs, einschließlich der AWS Befehlszeilen-Schnittstelle. Allerdings ist der AWS CDK verhält sich möglicherweise etwas anders als diese Tools. Es verwendet die AWS SDK für JavaScript unter der Motorhaube. Vollständige Informationen zur Einrichtung der Anmeldeinformationen für den AWS SDK für JavaScript, siehe Anmeldeinformationen einrichten.

Sie können optional das verwenden --role-arn (oder -r) Option zur Angabe des ARN einer IAM-Rolle, die für die Bereitstellung verwendet werden soll. Diese Rolle muss übernommen werden können von AWS Konto wird verwendet.

Geben Sie den Befehl app an

Für viele Funktionen der CDK-CLI sind eine oder mehrere erforderlich AWS CloudFormation Vorlagen müssen 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 mit dem app Schlüssel in der Datei cdk.json. Das ist im Hauptverzeichnis Ihres AWS CDK-Projekt. Die CDK-CLI bietet einen entsprechenden Befehl beim Erstellen eines neuen Projekts mit cdk init. Hier ist der cdk.json von einem frischen TypeScript Projekt zum Beispiel.

{ "app": "npx ts-node bin/hello-cdk.ts" }

Die CDK-CLI sucht nach cdk.json im aktuellen Arbeitsverzeichnis, wenn Sie versuchen, 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 in ~/.cdk.json (das heißt, in Ihrem Home-Verzeichnis), wenn es ihn nicht finden 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öchten cdk.json, benutze den --app (oder -a) Option, um es zu spezifizieren.

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ält, z. B. cdk.out, als Wert von --app. Die angegebenen Stacks werden von diesem Verzeichnis aus bereitgestellt; die App wird nicht synthetisiert.

Geben Sie Stapel an

Viele CDK-CLI-Befehle (zum Beispiel cdk deploy) arbeiten 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 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 passt auf alle Stapel)

  • ** passt zu allem in einer Hierarchie

Sie können auch das verwenden --all Option, um alle Stapel anzugeben.

Wenn Ihre App verwendet CDK-Pipelines, die CDK CLI versteht Ihre Stacks und Stufen als Hierarchie. Außerdem --all Option und die * Platzhalter passen nur zu Stacks der obersten Ebene. Um alle Stapel abzugleichen, verwende **. Benutze auch ** um alle Stapel unter einer bestimmten Hierarchie anzuzeigen.

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, weil cmd.exe erweitert keine Platzhalter, ist aber trotzdem 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 hinzufügen, indem Sie die des Stacks verwenden addDependency() Methode.

Bootstrappen Sie Ihre AWS Umgebung

Für die Bereitstellung von Stacks mit dem CDK sind spezielle Dedicated erforderlich AWS CDK-Ressourcen, die bereitgestellt werden müssen. Das cdk bootstrap Der Befehl erstellt die notwendigen Ressourcen für Sie. Sie müssen nur dann einen Bootstrap durchführen, wenn Sie einen Stack bereitstellen, der diese dedizierten Ressourcen benötigt. Siehe AWS CDK-Bootstrapping für Einzelheiten.

cdk bootstrap

Wenn es ohne Argumente ausgegeben wird, wie hier gezeigt, cdk bootstrap Der Befehl synthetisiert die aktuelle App und bootet die Umgebungen, in denen ihre Stacks bereitgestellt werden. Wenn die App umgebungsunabhängige Stacks enthält, die nicht explizit eine Umgebung angeben, werden das Standardkonto und die Region gebootet, oder die Umgebung wird wie folgt angegeben --profile.

Außerhalb einer App müssen Sie die Umgebung, die gebootet werden soll, explizit angeben. Sie können dies auch tun, um eine Umgebung zu booten, die nicht in Ihrer App oder lokal angegeben ist AWS Profil. Anmeldeinformationen müssen konfiguriert werden (z. B. in ~/.aws/credentials) für das angegebene Konto und die angegebene Region. 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), für die Sie einen solchen Stack bereitstellen, muss separat gebootet werden.

Es kann sein, dass Ihnen AWS Gebühren für was AWS CDK speichert die Bootstrapping-Ressourcen. Zusätzlich, wenn Sie verwenden --bootstrap-customer-key, ein AWS Es wird ein KMS-Schlüssel erstellt, für den auch 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, führen Sie einen erneuten Bootstrap durch --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 die durch die --cloudformation-execution-policies zu irgendwelchen AWS Konto in der --trust Liste. Standardmäßig erweitert dies die Lese- und Schreibberechtigungen für alle Ressourcen im Bootstrapping-Konto. Vergewissern Sie sich konfiguriere den Bootstrapping-Stack mit Richtlinien und vertrauenswürdigen Konten, 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 Folgendes ein cdk init.

mkdir my-cdk-app cd my-cdk-app cdk init <TEMPLATE> --language <LANGUAGE>

Die unterstützten Sprachen (<LANGUAGE>) sind:

Code Sprache

typescript

TypeScript

javascript

JavaScript

python

Python

java

Java

csharp

C#

Go

Go

<TEMPLATE>ist eine optionale Vorlage. Wenn die gewünschte Vorlage App, die Standardeinstellung, Sie können sie weglassen. Die verfügbaren Vorlagen sind:

Vorlage Description

app (Standard)

Erzeugt ein leeres AWS CDK-App.

sample-app

Erzeugt 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 Stapel in Ihrem zu sehen AWS Geben Sie in der CDK-Anwendung einen der folgenden äquivalenten Befehle ein:

cdk list cdk ls

Wenn Ihre Anwendung Folgendes enthält CDK-Pipelines Stacks, die CDK-CLI zeigt Stacknamen als Pfade an, die ihrer Position in der Pipeline-Hierarchie entsprechen. (Zum Beispiel PipelineStack, 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 Geben Sie Stapel an.

Füge das hinzu --long Flag, um mehr Informationen über die Stacks zu sehen, einschließlich der Stacknamen und ihrer Umgebungen (AWS Konto und Region).

Synthetisieren Sie Stapel

Das cdk synthesize Befehl (fast immer abgekürzt) synth) synthetisiert einen in Ihrer App definierten Stack zu einem CloudFormation Vorlage.

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 Verzeichnis. Das cdk synth Der Befehl druckt einfach die generierten Vorlagen für einen oder mehrere angegebene Stapel.

Siehe cdk synth --help für alle verfügbaren Optionen. Einige der am häufigsten verwendeten Optionen werden im folgenden Abschnitt behandelt.

Geben Sie Kontextwerte an

Benutze das --context oder -c Option zum Bestehen Laufzeitkontext Werte für Ihre CDK-App.

# 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 Stapel 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 das hinzu --json Flag, um es stattdessen im JSON-Format anzuzeigen.

cdk synth --json MyStack

Geben Sie das Ausgabeverzeichnis an

Fügen Sie das hinzu --output (-o) Option, um die synthetisierten Vorlagen in ein anderes Verzeichnis zu schreiben als cdk.out.

cdk synth --output=~/templates

Stapel bereitstellen

Die cdk deploy Unterbefehl stellt einen oder mehrere angegebene Stacks auf Ihrem bereit AWS Konto.

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 frisch AWS CloudFormation Vorlagen, bevor Sie etwas bereitstellen. Daher können Sie die meisten Befehlszeilenoptionen mit verwenden cdk synth (zum Beispiel --context) kann auch verwendet werden mit cdk deploy.

Sehen cdk deploy --help für alle verfügbaren Optionen. Einige der nützlichsten Optionen werden im folgenden Abschnitt behandelt.

Überspringen Sie die Synthese

Das cdk deploy Der 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 haben cdk synth, Sie können den redundanten Syntheseschritt bei der Bereitstellung unterdrücken. Geben Sie dazu die Ihres Projekts an cdk.out Verzeichnis im --app Option.

cdk deploy --app cdk.out StackOne StackTwo

Rollback deaktivieren

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 synthetisiert und bereitstellt AWS CloudFormation Vorlagen.

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 jedoch noch an der Entwicklung Ihrer Infrastruktur arbeiten, 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 Folgendes hinzufügen --no-rollback zu deinem cdk deploy Befehl. Mit diesem Flag werden fehlgeschlagene Bereitstellungen nicht rückgängig gemacht. 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

Benutze das --hotswap Flagge mit cdk deploy um zu versuchen, Ihre zu aktualisieren AWS Ressourcen direkt anstatt eine zu generieren AWS CloudFormation Set ändern und bereitstellen. Die Bereitstellung fällt zurück auf AWS CloudFormation Bereitstellung, wenn 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 der CDK CLI (cdk deploy --watch, oder cdk watch kurz gesagt) überwacht kontinuierlich die Quelldateien und Ressourcen 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 die --hotswap flag, das die Bereitstellung von Änderungen an Lambda-Funktionen beschleunigt. Es greift auch auf die Bereitstellung über zurück AWS CloudFormation wenn Sie die Infrastrukturkonfiguration geändert haben. Zu haben cdk watch immer voll durchstarten AWS CloudFormation Bereitstellungen, fügen Sie das hinzu --no-hotswap kennzeichnen cdk watch.

Alle Änderungen, die währenddessen vorgenommen wurden cdk watch führt bereits eine Bereitstellung durch. Sie werden zu einer einzigen Bereitstellung zusammengefasst, die beginnt, sobald die laufende Bereitstellung abgeschlossen ist.

Im Watch-Modus wird der verwendet "watch" geben Sie die des Projekts ein cdk.json um zu bestimmen, 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 das "include" und "exclude" Einträge in der "watch" Schlüssel. Folgendes cdk.json Die Datei zeigt ein Beispiel für diese Einträge.

{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }

cdk watch führt die aus "build" Befehl von cdk.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, beide * und **, kann verwendet werden in "watch" und "build" Schlüssel. Jeder Pfad wird relativ zum übergeordneten Verzeichnis von interpretiert cdk.json. Der Standardwert von include ist **/*, also alle Dateien und Verzeichnisse im Stammverzeichnis des Projekts. exclude ist optional.

Wichtig

Der Watch-Modus wird für Produktionsbereitstellungen nicht empfohlen.

Spezifizieren AWS CloudFormation Parameter

Die CDK-CLI unterstützt die Angabe AWS CloudFormation Parameter bei der Bereitstellung. Sie können diese in der Befehlszeile eingeben, indem Sie dem Befehl folgen --parameters Flagge.

cdk deploy MyStack --parameters uploadBucketName=UploadBucket

Um mehrere Parameter zu definieren, verwenden Sie mehrere --parameters Flaggen.

cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket

Wenn Sie mehrere Stapel bereitstellen, können Sie für jeden Stapel 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

In der Standardeinstellung ist der AWS CDK behält Parameterwerte aus früheren Bereitstellungen bei und verwendet sie in späteren Bereitstellungen, sofern sie nicht explizit angegeben werden. Verwenden Sie den --no-previous-parameters Flag, um die Angabe aller Parameter zu erfordern.

Geben Sie die Ausgabedatei an

Wenn dein Stack deklariert AWS CloudFormation Ausgänge, diese werden normalerweise nach Abschluss der Bereitstellung auf dem Bildschirm angezeigt. Um sie in eine Datei im JSON-Format zu schreiben, verwenden Sie den --outputs-file Flagge.

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

never

Eine Genehmigung ist niemals erforderlich

any-change

Für jede Änderung am Stack ist eine Genehmigung erforderlich

broadening (Standard)

Erfordert eine Genehmigung, wenn Änderungen eine Erweiterung der Berechtigungen oder Sicherheitsgruppenregeln beinhalten

Die Einstellung kann auch im konfiguriert werden cdk.json datei.

{ "app": "...", "requireApproval": "never" }

Stapel vergleichen

Das cdk diff Der 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

Um die Stacks Ihrer App mit einer gespeicherten zu vergleichen CloudFormation Vorlage:

cdk diff --template ~/stacks/MyStack.old MyStack

Importiert vorhandene Ressourcen in einen Stack

Sie können das verwenden cdk import Befehl, um Ressourcen unter die Verwaltung von zu stellen CloudFormation für ein bestimmtes AWS CDK-Stapel. Dies ist nützlich, wenn Sie migrieren zu AWS CDK oder verschieben Ressourcen zwischen Stacks oder ändern ihre logische ID. cdk import Verwendungszwecke CloudFormation Importe von Ressourcen. Sieh dir das an Liste der Ressourcen, die hier importiert werden können.

Um eine vorhandene Ressource in eine zu importieren AWS Folgen Sie den folgenden Schritten im CDK-Stack:

  • Stellen Sie sicher, dass die Ressource derzeit nicht von einer anderen Person verwaltet wird CloudFormation stapeln. Wenn ja, legen Sie zuerst die Entfernungsrichtlinie auf RemovalPolicy.RETAIN im Stapel, in 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 verwaltet wird von CloudFormation löscht sie aber nicht.

  • Führe eine aus cdk diff um sicherzustellen, dass keine ausstehenden Änderungen an der AWS CDK-Stack, in den Sie Ressourcen importieren möchten. 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 für das Beispiel des Buckets sicher, dass Sie Folgendes angeben AWS KMS-Schlüssel, Lebenszyklusrichtlinien und alles andere, was für den Bucket relevant ist. 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 normalerweise, keine Ressourcennamen in Ihren Namen aufzunehmen AWS CDK-Ressourcendefinitionen, 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.

  • Wann cdk import meldet Erfolg, die Ressource wird jetzt verwaltet von AWS CDK und CloudFormation. Alle nachfolgenden Änderungen, die Sie an den Ressourceneigenschaften in Ihrem AWS CDK-App Die Konstrukt-Konfiguration wird bei der nächsten Bereitstellung angewendet.

  • Um zu bestätigen, dass die Ressourcendefinition in Ihrem AWS Die CDK-App entspricht dem aktuellen Status der Ressource, Sie können eine starten CloudFormation Betrieb zur Drift-Erkennung.

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 einem Projekt gespeichert werden cdk.json Datei oder in der .cdk.json Datei in Ihrem Benutzerverzeichnis. Im Folgenden finden Sie einen alphabetischen Verweis auf die unterstützten Konfigurationseinstellungen.

Key (Schlüssel) Hinweise CDK-CLI-Option

app

Der Befehl, der die CDK-Anwendung ausführt.

--app

assetMetadata

Wenn false, CDK fügt Ressourcen, die Assets verwenden, keine Metadaten hinzu.

--no-asset-metadata

bootstrapKmsKeyId

Überschreibt die ID des AWS KMS-Schlüssel, der zum Verschlüsseln des Amazon S3-Bereitstellungs-Buckets verwendet wird.

--bootstrap-kms-key-id

build

Der Befehl, der die CDK-Anwendung vor der Synthese kompiliert oder erstellt. Nicht erlaubt in ~/.cdk.json.

--build

browser

Der Befehl zum Starten eines Webbrowsers für den cdk docs Unterbefehl.

--browser

context

Sehen Sie Kontextwerte und AWS CDK. Kontextwerte in einer Konfigurationsdatei werden nicht gelöscht von cdk context --clear. (Die CDK-CLI platziert zwischengespeicherte Kontextwerte in cdk.context.json.)

--context

debug

Wenn true, CDK CLI gibt detailliertere Informationen aus, die für das Debuggen nützlich sind.

--debug

language

Die Sprache, die für die Initialisierung neuer Projekte verwendet werden soll.

--language

lookups

Wenn false, sind keine Kontext-Lookups zulässig. Die Synthese schlägt fehl, wenn Kontext-Lookups durchgeführt werden müssen.

--no-lookups

notices

Wenn false, unterdrückt die Anzeige von Meldungen über Sicherheitslücken, Regressionen und nicht unterstützte Versionen.

--no-notices

output

Der Name des Verzeichnisses, in das die synthetisierte Cloud-Assembly ausgegeben wird (Standard) "cdk.out").

--output

outputsFile

Die Datei, zu der AWS CloudFormation Ausgaben von bereitgestellten Stacks werden geschrieben (in JSON Format).

--outputs-file

pathMetadata

Wenn false, CDK-Pfadmetadaten werden den synthetisierten Vorlagen nicht hinzugefügt.

--no-path-metadata

plugin

JSON-Array, das die Paketnamen oder lokalen Pfade von Paketen angibt, die das CDK erweitern

--plugin

profile

Name des Standardwerts AWS Profil, das für die Angabe von Regions- und Kontoanmeldeinformationen verwendet wird.

--profile

progress

Wenn gesetzt auf "events", die CDK-CLI zeigt alles an AWS CloudFormation Ereignisse während der Bereitstellung statt einer Fortschrittsleiste.

--progress

requireApproval

Standard-Genehmigungsstufe für Änderungen, die eine manuelle Genehmigung erfordern. Siehe Genehmigen Sie sicherheitsrelevante Änderungen.

--require-approval

rollback

Wenn false, fehlgeschlagene Bereitstellungen werden nicht rückgängig gemacht.

--no-rollback

staging

Wenn false, Assets werden nicht in das Ausgabeverzeichnis kopiert (verwenden Sie es für das lokale Debugging der Quelldateien mit AWS SAM).

--no-staging

tags

JSON Objekt, das Tags (Schlüssel-Wert-Paare) für den Stack enthält.

--tags

toolkitBucketName

Der Name des Amazon S3-Buckets, der für die Bereitstellung von Ressourcen wie Lambda-Funktionen und Container-Images verwendet wird (siehe Bootstrappen Sie Ihre AWS Umwelt).

--toolkit-bucket-name

toolkitStackName

Der Name des Bootstrap-Stacks (siehe Bootstrap dein AWS Umwelt).

--toolkit-stack-name

versionReporting

Wenn false, deaktiviert die Versionsberichterstattung.

--no-version-reporting

watch

JSON-Objekt mit "include" und "exclude" Schlüssel, die angeben, welche Dateien bei Änderungen einen Neuaufbau des Projekts auslösen sollen (oder nicht). Siehe Modus ansehen.

--watch