AWS CDK ReferenzCLI - AWS Cloud Development Kit (AWS CDK) v2

Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS CDK ReferenzCLI

Die AWS Cloud Development Kit (AWS CDK) Befehlszeilenschnittstelle (AWS CDK CLI), auch bekannt als CDKToolkit, ist das wichtigste Tool für die Interaktion mit Ihrer AWS CDK App. Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die von der generierten AWS CloudFormation Vorlagen bereit. AWS CDK Es bietet auch andere Funktionen, die für die Erstellung und Arbeit mit Projekten nützlich sind. AWS CDK Dieses Thema enthält Informationen zu häufigen Anwendungsfällen von CDKCLI.

Das 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 von arbeiten AWS CDK, sollten Sie erwägen, CDK CLI in einzelnen CDK Projekten eine passende Version von zu installieren. Um dies zu tun, lassen Sie den npm install Befehl -g aus. Verwenden Sie es dannnpx aws-cdk, um es aufzurufen. Dadurch wird die lokale Version ausgeführt, falls eine existiert, und falls nicht, wird auf eine globale Version zurückgegriffen.

CDKCLIBefehle

Alle CDK CLI Befehle beginnen mitcdk, gefolgt von einem Unterbefehl (list, synthesizedeploy, usw.). 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 unter. AWS CDKCLIBefehlsreferenz

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 ein Gleichheitszeichen = vom Namen getrennt werden. Die folgenden beiden Optionen sind gleichwertig.

--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack

Einige Optionen sind Flags (Boolesche Werte). Sie können true oder false als ihren Wert angeben. Wenn Sie keinen Wert angeben, wird der Wert als true Sie können dem Optionsnamen auch implizit ein Präfix voranstellenfalse. no-

# 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 mehrfach angegeben werden, um mehrere Werte anzugeben. Es wird darauf hingewiesen, dass [array] Sie die CDK CLI Hilfe eingegeben haben. Beispielsweise:

cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe

Integrierte Hilfe

Die CDK CLI hat eine integrierte Hilfe. Allgemeine Hilfe zum Programm und eine Liste der bereitgestellten Unterbefehle finden Sie, indem Sie Folgendes eingeben:

cdk --help

Um beispielsweise Hilfe für einen bestimmten Unterbefehl zu erhaltendeploy, geben Sie ihn vor dem --help Flag an.

cdk deploy --help

Problem cdk version beim Anzeigen der Version von. CDK CLI Geben Sie diese Informationen an, wenn Sie Support anfordern.

Versionsberichterstattung

Um einen Einblick in die AWS CDK Verwendung von zu gewinnen, werden die von AWS CDK Anwendungen verwendeten Konstrukte mithilfe einer als AWS::CDK::Metadata identifizierten Ressource gesammelt und gemeldet. Diese Ressource wird zu AWS CloudFormation Vorlagen hinzugefügt und kann leicht überprüft werden. Diese Informationen können auch verwendet werden, AWS um Stacks anhand eines Konstrukts mit bekannten Sicherheits- oder Zuverlässigkeitsproblemen zu identifizieren. Es kann auch verwendet werden, um ihre Benutzer mit wichtigen Informationen zu kontaktieren.

Anmerkung

Vor Version 1.93.0 AWS CDK meldeten sie die Namen und Versionen der Module, die während der Synthese geladen wurden, und nicht die im Stack verwendeten Konstrukte.

Standardmäßig AWS CDK meldet der die Verwendung von Konstrukten in den folgenden NPM Modulen, die im Stack verwendet werden:

  • AWS CDK Kernmodul

  • AWS Konstruieren Sie Bibliotheksmodule

  • AWS Modul Solutions Constructs

  • AWS Modul „Render Farm Deployment Kit“

Die AWS::CDK::Metadata Ressource sieht in etwa wie folgt aus.

CDKMetadata:
  Type: "AWS::CDK::Metadata"
  Properties:
    Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="

Die Analytics Eigenschaft ist eine gzip-komprimierte, Base64-kodierte, mit Präfix kodierte Liste der Konstrukte im Stapel.

Verwenden Sie eine der folgenden Methoden, um die Versionsberichterstattung zu deaktivieren:

  • Verwenden Sie den cdk Befehl mit dem --no-version-reporting Argument, um sich für einen einzelnen Befehl zu entscheiden.

    cdk --no-version-reporting synth

    Denken Sie daran, dass das Programm vor der Bereitstellung neue Vorlagen CDK CLI synthetisiert. Sie sollten also auch weitere cdk deploy Befehle --no-version-reporting hinzufügen.

  • In ./cdk.json oder versionReporting ~/.cdk.json auf „Falsch“ setzen. Dies wird deaktiviert, es sei denn, Sie entscheiden sich dafür, indem Sie einen einzelnen Befehl angeben--version-reporting.

    { "app": "...", "versionReporting": false }

Authentifizierung mit AWS

Je nach Umgebung und verfügbarem Zugriff gibt es verschiedene Möglichkeiten, den programmatischen AWS Zugriff auf AWS Ressourcen zu konfigurieren.

Informationen zur Auswahl Ihrer Authentifizierungsmethode und deren Konfiguration für finden Sie CDK CLI unterKonfigurieren Sie Sicherheitsanmeldedaten für AWS CDKCLI.

Der empfohlene Ansatz für neue Benutzer, die sich lokal entwickeln und von ihrem Arbeitgeber keine Authentifizierungsmethode erhalten, ist die Einrichtung AWS IAM Identity Center. Diese Methode beinhaltet die Installation von, AWS CLI um die Konfiguration zu vereinfachen und sich regelmäßig beim AWS Zugangsportal anzumelden. Wenn Sie sich für diese Methode entscheiden, sollte Ihre Umgebung die folgenden Elemente enthalten, nachdem Sie das Verfahren zur IAMIdentity Center-Authentifizierung im Referenzhandbuch AWS SDKsund im Tools-Referenzhandbuch abgeschlossen haben:

  • Die AWS CLI, mit der Sie eine AWS Access-Portal-Sitzung starten, bevor Sie Ihre Anwendung ausführen.

  • Eine gemeinsam genutzte AWSconfig Datei mit einem [default] Profil mit einer Reihe von Konfigurationswerten, auf die von der aus verwiesen werden kann AWS CDK. Informationen zum Speicherort dieser Datei finden Sie unter Speicherort der gemeinsam genutzten Dateien im Referenzhandbuch AWS SDKsund im Tools-Referenzhandbuch.

  • Die gemeinsam genutzte config Datei legt die regionEinstellung fest. Dies legt AWS-Region die Standardeinstellung fest AWS CDK und CDK CLI verwendet sie für AWS Anfragen.

  • Der CDK CLI verwendet die SSOToken-Provider-Konfiguration des Profils, um Anmeldeinformationen abzurufen, bevor Anfragen an gesendet AWS werden. Der sso_role_name Wert, bei dem es sich um eine IAM Rolle handelt, die mit einem IAM Identity Center-Berechtigungssatz verknüpft ist, sollte den Zugriff auf die in Ihrer Anwendung AWS -Services verwendeten Rechte ermöglichen.

    Die folgende config Beispieldatei zeigt ein Standardprofil, das mit der SSO Token-Provider-Konfiguration eingerichtet wurde. Die sso_session Einstellung des Profils bezieht sich auf den benannten sso-sessionAbschnitt. Der sso-session Abschnitt 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 Access-Portal-Sitzung

Vor dem Zugriff benötigen Sie eine aktive AWS Access-Portal-Sitzung AWS -Services, CDK CLI um die IAM Identity Center-Authentifizierung zur Auflösung von Anmeldeinformationen verwenden zu können. Abhängig von Ihrer konfigurierten Sitzungsdauer läuft Ihr Zugriff irgendwann ab und CDK CLI es wird ein Authentifizierungsfehler auftreten. Führen Sie den folgenden Befehl im aus AWS CLI , um sich beim AWS Zugriffsportal anzumelden.

aws sso login

Wenn Ihre SSO Token-Provider-Konfiguration ein benanntes Profil anstelle des Standardprofils verwendet, lautet der Befehlaws sso login --profile NAME. Geben Sie dieses Profil auch an, wenn Sie cdk Befehle mit 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 IAM Identity Center-Konto und der Berechtigungssatz angegeben werden, die in der gemeinsam genutzten config Datei konfiguriert sind.

Anmerkung

Wenn Sie bereits über eine aktive AWS Access-Portal-Sitzung verfügen und diese ausführenaws sso login, müssen Sie keine Anmeldeinformationen angeben.

Beim Anmeldevorgang werden Sie möglicherweise aufgefordert, den AWS CLI Zugriff auf Ihre Daten zu gewähren. Da AWS CLI der auf dem SDK für Python aufbaut, können Berechtigungsnachrichten Variationen des botocore Namens enthalten.

Geben Sie die Region und andere Konfigurationen an

Sie CDK CLI müssen die AWS Region kennen, in der Sie die Bereitstellung durchführen, und wissen, wie Sie sich authentifizieren. AWS Dies ist für Bereitstellungsvorgänge und zum Abrufen von Kontextwerten während der Synthese erforderlich. 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 den AWS CLI und den verschiedenen verwendet werden AWS SDKs. Der CDK CLI sucht in der folgenden Reihenfolge nach diesen Informationen.

  • Die AWS_DEFAULT_REGION Umgebungsvariable.

  • Ein benanntes Profil, das in der AWS config Standarddatei definiert und mit der --profile Option für cdk Befehle angegeben wurde.

  • Der [default] Abschnitt der AWS config Standarddatei.

Neben der Angabe der AWS Authentifizierung und einer Region im [default] Abschnitt können Sie auch einen oder mehrere [profile NAME] Abschnitte hinzufügen, wobei NAME ist der Name des Profils. Weitere Informationen zu benannten Profilen finden Sie unter Dateien mit gemeinsam genutzten Konfigurationen und Anmeldeinformationen im AWS SDKsReferenzhandbuch zu 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 SDKsTools

Die Umgebung, die Sie in Ihrer AWS CDK App mithilfe der env Stack-Eigenschaft angeben, wird bei der Synthese verwendet. Es wird verwendet, um eine umgebungsspezifische AWS CloudFormation Vorlage zu generieren, und während der Bereitstellung überschreibt es das Konto oder die Region, das mit einer der vorherigen 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 undSDKs, einschließlich der. AWS Command Line Interface Sie verhalten sich jedoch AWS CDK möglicherweise etwas anders als diese Tools. Es nutzt das, was AWS SDK for JavaScript unter der Haube steckt. Vollständige Informationen zum Einrichten von Anmeldeinformationen für finden Sie unter Anmeldeinformationen einrichten. AWS SDK for JavaScript

Sie können optional die Option --role-arn (oder-r) verwenden, um die ARN 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 App-Befehl an

Für viele Funktionen von 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 wurden. Daher verwendet es eine Konfigurationsoption, um den genauen 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. Dies befindet sich im Hauptverzeichnis Ihres AWS CDK Projekts. Das CDK CLI bietet einen geeigneten Befehl beim Erstellen eines neuen Projekts mitcdk init. Hier ist zum Beispiel das cdk.json aus einem neuen TypeScript Projekt.

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

Das CDK CLI sucht cdk.json im aktuellen Arbeitsverzeichnis, wenn Sie versuchen, Ihre App auszuführen. Aus diesem Grund können Sie im Hauptverzeichnis Ihres Projekts eine Shell geöffnet lassen, um CDK CLI Befehle auszugeben.

Sie sucht CDK CLI auch nach dem App-Schlüssel in ~/.cdk.json (d. h. in Ihrem Home-Verzeichnis), wenn sie 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 diesem 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 von diesem Verzeichnis aus bereitgestellt; die App wird nicht synthetisiert.

Geben Sie Stapel an

Viele CDK CLI Befehle (zum Beispielcdk deploy) funktionieren mit Stacks, die in Ihrer App definiert sind. Wenn Ihre App nur einen Stapel enthält, CDK CLI wird davon ausgegangen, dass Sie diesen meinen, wenn Sie einen Stack nicht 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 Stacks einzeln nach ID in der Befehlszeile angeben. Denken Sie daran, dass die ID der Wert ist, der durch das zweite Argument angegeben wird, wenn Sie den Stack instanziieren.

cdk synth PipelineStack LambdaStack

Sie können auch Platzhalter verwenden, um anzugeben, IDs dass sie 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 die --all Option auch verwenden, um alle Stapel anzugeben.

Wenn Ihre App CDKPipelines verwendet, CDK CLI versteht sie Ihre Stacks und Stufen als Hierarchie. Außerdem entsprechen die --all Option und der * Platzhalter nur Stacks der obersten Ebene. Um alle Stapel abzugleichen, verwenden Sie. ** Wird auch verwendet**, um alle Stapel unter einer bestimmten Hierarchie anzugeben.

Wenn Sie Platzhalter verwenden, setzen Sie das Muster in Anführungszeichen 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 dies 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 bewährte Methode.

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. Bei der CDK CLI Entscheidung über die Reihenfolge, in der sie verarbeitet werden, werden Abhängigkeiten zwischen den Stacks berücksichtigt. Nehmen wir zum Beispiel an, dass ein Stapel einen Wert verwendet, der von einem anderen erzeugt wird (z. B. den Wert ARN einer im zweiten Stapel definierten Ressource). 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 Methode des Stacks addDependency()verwenden.

Bootstrap für deine Umgebung AWS

Für die Bereitstellung von Stacks mit CDK müssen spezielle dedizierte AWS CDK Ressourcen bereitgestellt werden. Der cdk bootstrap Befehl erstellt die erforderlichen Ressourcen für Sie. Sie müssen das Bootstrap nur ausführen, wenn Sie einen Stack bereitstellen, der diese dedizierten Ressourcen benötigt. Details dazu 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 bootet die Umgebungen, in denen die Stacks bereitgestellt werden. Wenn die App umgebungsunabhängige Stacks enthält, die nicht explizit eine Umgebung angeben, werden das Standardkonto und die Region oder die mit angegebene Umgebung gebootet. --profile

Außerhalb einer App müssen Sie die Umgebung, für die ein Bootstrap erstellt 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

Für jede Umgebung (Kombination aus Konto und Region), in der Sie einen solchen Stack bereitstellen, muss das Bootstrapping separat durchgeführt werden.

Möglicherweise fallen AWS Gebühren für das an, was in den Bootstrap-Ressourcen AWS CDK gespeichert wird. Darüber hinaus wird bei Verwendung ein AWS KMS Schlüssel erstellt-bootstrap-customer-key, 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, starten Sie das System erneut mit. --no-bootstrap-customer-key

Anmerkung

CDKCLIv2 unterstützt nicht die ursprüngliche Bootstrap-Vorlage, die als Legacy-Vorlage bezeichnet wird und standardmäßig mit Version 1 verwendet wird. CDK

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.

Erstellen Sie eine neue App

Um eine neue App zu erstellen, erstellen Sie ein Verzeichnis dafür und geben Sie dann innerhalb des Verzeichnisses das Problem eincdk 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#

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

Beschreibung

app(Standard)

Erzeugt eine leere AWS CDK App.

sample-app

Erstellt eine AWS CDK App mit einem Stapel, der eine SQS Amazon-Warteschlange und ein SNS Amazon-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 Stacks in Ihrer AWS CDK Anwendung zu sehen, geben Sie einen der folgenden entsprechenden Befehle ein:

cdk list cdk ls

Wenn Ihre Anwendung CDKPipelines-Stacks enthält, CDK CLI werden die Stack-Namen entsprechend ihrer Position in der Pipeline-Hierarchie als Pfade angezeigt. (Zum Beispiel, PipelineStackPipelineStack/Prod, undPipelineStack/Prod/MyService.)

Wenn Ihre App viele Stapel enthält, können Sie einen vollständigen oder teilweisen Stapel IDs der aufzulistenden Stapel angeben. Weitere Informationen finden Sie unter Geben Sie Stapel an.

Fügen Sie das --long Flag hinzu, um weitere Informationen zu den Stacks zu erhalten, einschließlich der Stack-Namen und ihrer Umgebungen (AWS Konto und Region).

Synthetisieren Sie Stapel

Der cdk synthesize Befehl (fast immer abgekürztsynth) synthetisiert einen in Ihrer App definierten Stack 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

Der führt Ihre App CDK CLI tatsächlich aus und synthetisiert vor den meisten Vorgängen neue Vorlagen (z. B. beim Bereitstellen oder Vergleichen von Stacks). 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 Werte für den Laufzeitkontext 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

Bei der Bereitstellung mehrerer Stacks werden die angegebenen Kontextwerte normalerweise an alle übergeben. Wenn Sie möchten, können Sie für jeden Stack 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

Der CDK CLI führt Ihre App aus und synthetisiert neue AWS CloudFormation Vorlagen, bevor etwas bereitgestellt wird. Daher können die meisten Befehlszeilenoptionen, die Sie mit verwenden können cdk synth (z. B.--context), auch mit cdk deploy verwendet werden.

Alle verfügbaren Optionen finden cdk deploy --help Sie unter. Einige der nützlichsten Optionen werden im folgenden Abschnitt behandelt.

Synthese überspringen

Der cdk deploy Befehl synthetisiert normalerweise die Stapel Ihrer App vor der Bereitstellung, um sicherzustellen, dass die Bereitstellung die neueste Version Ihrer App widerspiegelt. Wenn Sie wissen, dass Sie Ihren Code seit der letzten Version 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 den Rollback

AWS CloudFormation hat die Fähigkeit, Änderungen rückgängig zu machen, sodass Bereitstellungen atomar sind. Das bedeutet, dass sie entweder erfolgreich sind oder in ihrer Gesamtheit scheitern. Die AWS CDK erbt diese Fähigkeit, weil sie Vorlagen synthetisiert und bereitstellt AWS CloudFormation .

Rollback stellt sicher, dass sich Ihre Ressourcen jederzeit in einem konsistenten Zustand befinden, was für Produktionsstapel von entscheidender Bedeutung ist. Während Sie Ihre Infrastruktur noch entwickeln, sind einige Ausfälle jedoch unvermeidlich, und das Zurücksetzen fehlgeschlagener Bereitstellungen kann Sie verlangsamen.

Aus diesem Grund CDK CLI können Sie das Rollback deaktivieren, indem Sie Ihrem cdk deploy Befehl etwas --no-rollback hinzufügen. Mit dieser Markierung werden fehlgeschlagene Bereitstellungen nicht rückgängig gemacht. Stattdessen bleiben Ressourcen, die vor der ausgefallenen Ressource bereitgestellt wurden, bestehen, 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 mit der Entwicklung Ihrer Infrastruktur verbringen.

Wechseln im laufenden Betrieb

Verwenden Sie die --hotswap Markierung mitcdk deploy, um zu versuchen, Ihre AWS Ressourcen direkt zu aktualisieren, anstatt einen AWS CloudFormation Änderungssatz zu generieren und ihn bereitzustellen. Wenn Hot-Swapping nicht möglich ist, wird auf die AWS CloudFormation Bereitstellung zurückgegriffen.

Derzeit unterstützt Hot-Swapping Lambda-Funktionen, Step Functions Functions-Zustandsmaschinen und ECS Amazon-Container-Images. Das --hotswap Flag deaktiviert auch Rollback (d. h. impliziert). --no-rollback

Wichtig

Hot-Swapping wird für Produktionsbereitstellungen nicht empfohlen.

Modus „Ansehen“

Der CDK CLI Überwachungsmodus (cdk deploy --watchoder cdk watch kurz) ü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 Bereitstellung von Änderungen an Lambda-Funktionen beschleunigt. Es wird auch auf die Bereitstellung über zurückgegriffen, AWS CloudFormation falls 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 Flag zu cdk watch hinzu.

Alle Änderungen, die während cdk watch der Durchführung einer Bereitstellung vorgenommen werden, werden zu einer einzigen Bereitstellung zusammengefasst, die beginnt, sobald die Bereitstellung abgeschlossen ist.

Im Überwachungsmodus wird anhand des "watch" Schlüssels im Projekt 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 für Ihre Bereitstellung Befehle erforderlich sind, um Ihren Lambda-Code (oder etwas anderes, das nicht in Ihrer CDK App enthalten ist) zu erstellen oder zu verpacken, fügen Sie sie hier hinzu.

Platzhalter im Git-Stil, sowohl als auch**, können in den "watch" Tasten * und verwendet werden. "build" Jeder Pfad wird relativ zum übergeordneten Verzeichnis von interpretiert. cdk.json Der Standardwert von include ist**/*, d. h. alle Dateien und Verzeichnisse im Stammverzeichnis des Projekts. excludeist optional.

Wichtig

Der Überwachungsmodus wird für Produktionsbereitstellungen nicht empfohlen.

Geben Sie Parameter an AWS CloudFormation

Das 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 Stacks 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 derselbe Wert an alle Stacks übergeben.

cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket

Standardmäßig AWS CDK behält der Werte von Parametern aus früheren Bereitstellungen bei und verwendet sie in späteren Bereitstellungen, sofern sie nicht explizit angegeben wurden. Verwenden Sie das --no-previous-parameters Flag, um zu verlangen, dass alle Parameter angegeben werden.

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 im JSON Format in eine Datei 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, werden Sie CDK CLI aufgefordert, sicherheitsrelevante Änderungen zu genehmigen, bevor Sie sie implementieren. Sie können den Grad der Änderung angeben, für den eine Genehmigung erforderlich ist:

cdk deploy --require-approval LEVEL

LEVEL kann einer der folgenden Werte sein:

Begriff

Bedeutung

never

Eine Genehmigung ist niemals erforderlich

any-change

Erfordert eine Genehmigung für jede IAM security-group-related Änderung

broadening(Standard)

Erfordert eine Genehmigung, wenn IAM Aussagen oder Verkehrsregeln hinzugefügt werden; für Löschungen ist keine Genehmigung erforderlich

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 seine 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 AWS CDK, wenn Sie zu Stacks migrieren oder Ressourcen zwischen Stacks verschieben oder deren logische ID ändern. cdk import Verwendet CloudFormation Ressourcenimporte. Eine 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 nicht von einem anderen CloudFormation Stack verwaltet wird. Ist dies der Fall, legen Sie zunächst die Entfernungsrichtlinie auf den Stapel fest, RemovalPolicy.RETAIN 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 Vorgang wird sichergestellt, dass die Ressource nicht mehr von verwaltet wird, sie wird CloudFormation aber nicht gelöscht.

  • Führen Sie a auscdk diff, um sicherzustellen, dass an dem AWS CDK Stack, in den Sie Ressourcen importieren möchten, keine ausstehenden Änderungen vorliegen. 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 S3-Bucket importieren möchten, fügen Sie etwas hinzu wienew s3.Bucket(this, 'ImportedS3Bucket', {});. Nehmen Sie keine Änderungen an anderen Ressourcen vor.

    Sie müssen außerdem sicherstellen, dass der Status, den die Ressource derzeit hat, exakt in der Definition modelliert wird. Achten Sie beim Beispiel des Buckets darauf, dass Sie AWS KMS Schlüssel, Lebenszyklusrichtlinien und alles andere, was für den Bucket relevant ist, angeben. Wenn Sie dies nicht tun, bewirken nachfolgende Aktualisierungsvorgänge möglicherweise nicht das, was Sie erwarten.

    Sie können wählen, ob Sie den physischen Bucket-Namen einbeziehen möchten oder nicht. Wir empfehlen normalerweise, 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, CLI werden Sie aufgefordert, die tatsächlichen Namen der Ressourcen, die Sie importieren, einzugeben. Danach beginnt der Import.

  • Wenn ein Erfolg cdk import gemeldet wird, wird die Ressource jetzt von AWS CDK und verwaltet CloudFormation. Alle nachfolgenden Änderungen, die Sie an den Ressourceneigenschaften in Ihrer AWS CDK App und der Construct-Konfiguration vornehmen, werden bei der nächsten Bereitstellung angewendet.

  • Um zu überprüfen, ob die Ressourcendefinition in Ihrer AWS CDK App dem aktuellen Status der Ressource entspricht, können Sie einen Vorgang zur Erkennung CloudFormation von Abweichungen starten.

Diese Funktion unterstützt derzeit nicht den Import von Ressourcen in verschachtelte Stacks.

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 einen alphabetischen Verweis auf die unterstützten Konfigurationseinstellungen.

Schlüssel Hinweise CDKCLIOption
app Der Befehl, der die CDK Anwendung ausführt. --app
assetMetadata Wennfalse, CDK fügt keine Metadaten zu Ressourcen hinzu, die Assets verwenden. --no-asset-metadata
bootstrapKmsKeyId Überschreibt die ID des AWS KMS Schlüssels, der zur Verschlüsselung des Amazon S3 S3-Bereitstellungs-Buckets verwendet wurde. --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 Siehe Kontextwerte und AWS CDK. Kontextwerte in einer Konfigurationsdatei werden von nicht gelöscht. cdk context --clear (Die CDK CLI platziert zwischengespeicherte Kontextwerte incdk.context.json.) --context
debug Wenntrue, 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 Fallsfalse, sind keine Kontext-Lookups zulässig. Die Synthese schlägt fehl, wenn Kontext-Lookups durchgeführt werden müssen. --no-lookups
notices Wennfalse, 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, in die AWS CloudFormation Ausgaben von bereitgestellten Stacks geschrieben werden (im JSON Format). --outputs-file
pathMetadata Fallsfalse, werden CDK Pfad-Metadaten nicht zu synthetisierten Vorlagen hinzugefügt. --no-path-metadata
plugin JSONArray, das die Paketnamen oder lokalen Pfade von Paketen angibt, die CDK --plugin
profile Name des AWS Standardprofils, das für die Angabe der Region und der Kontoanmeldedaten verwendet wird. --profile
progress Wenn diese Option auf gesetzt ist"events", CDK CLI werden alle AWS CloudFormation Ereignisse während der Bereitstellung angezeigt und es wird kein Fortschrittsbalken angezeigt. --progress
requireApproval Standardgenehmigungsstufe für Sicherheitsänderungen. Siehe Genehmigen Sie sicherheitsrelevante Änderungen --require-approval
rollback Fallsfalse, werden fehlgeschlagene Bereitstellungen nicht rückgängig gemacht. --no-rollback
staging Fallsfalse, werden die Ressourcen nicht in das Ausgabeverzeichnis kopiert (zum lokalen Debuggen der Quelldateien mit AWS SAM verwenden). --no-staging
tags JSONObjekt, das Tags (Schlüssel-Wert-Paare) für den Stapel enthält. --tags
toolkitBucketName Der Name des Amazon S3 S3-Buckets, der für die Bereitstellung von Ressourcen wie Lambda-Funktionen und Container-Images verwendet wird (sieheBootstrap für deine Umgebung AWS. --toolkit-bucket-name
toolkitStackName Der Name des Bootstrap-Stacks (siehe. Bootstrap für deine Umgebung AWS --toolkit-stack-name
versionReporting Wennfalse, deaktiviert die Versionsberichterstattung. --no-version-reporting
watch JSONObjekt, das "exclude" Schlüssel enthält"include", die angeben, welche Dateien bei Änderungen einen Neuaufbau des Projekts auslösen sollen (oder nicht). Siehe Modus „Ansehen“. --watch