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

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

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

AWS CDK Apps

Die AWS Cloud Development Kit (AWS CDK) Anwendung oder App ist eine Sammlung von einem oder mehreren CDK-Stacks. Stacks sind eine Sammlung von einem oder mehreren Konstrukten, die Ressourcen und Eigenschaften definieren AWS . Daher wird die Gesamtgruppierung Ihrer Stapel und Konstrukte als Ihre CDK-App bezeichnet.

Wie erstelle ich eine CDK-App

Sie erstellen eine App, indem Sie eine App-Instanz in der Anwendungsdatei Ihres Projekts definieren. Dazu importieren und verwenden Sie das AppKonstrukt aus der AWS Construct-Bibliothek. Das App Konstrukt benötigt keine Initialisierungsargumente. Es ist das einzige Konstrukt, das als Wurzel verwendet werden kann.

Die Stack Klassen App und aus der AWS Construct-Bibliothek sind einzigartige Konstrukte. Im Vergleich zu anderen Konstrukten konfigurieren sie AWS Ressourcen nicht eigenständig. Stattdessen werden sie verwendet, um Kontext für Ihre anderen Konstrukte bereitzustellen. Alle Konstrukte, die AWS Ressourcen darstellen, müssen direkt oder indirekt im Rahmen eines Stack Konstrukts definiert werden. StackKonstrukte werden innerhalb des Gültigkeitsbereichs eines App Konstrukts definiert.

Apps werden dann synthetisiert, um AWS CloudFormation Vorlagen für Ihre Stacks zu erstellen. Im Folgenden wird ein Beispiel gezeigt:

TypeScript
const app = new App(); new MyFirstStack(app, 'hello-cdk'); app.synth();
JavaScript
const app = new App(); new MyFirstStack(app, 'hello-cdk'); app.synth();
Python
app = App() MyFirstStack(app, "hello-cdk") app.synth()
Java
App app = new App(); new MyFirstStack(app, "hello-cdk"); app.synth();
C#
var app = new App(); new MyFirstStack(app, "hello-cdk"); app.Synth();
Go
app := awscdk.NewApp(nil) MyFirstStack(app, "MyFirstStack", &MyFirstStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil)

Stacks innerhalb einer einzigen App können problemlos auf die Ressourcen und Eigenschaften der jeweils anderen App verweisen. Das AWS CDK leitet Abhängigkeiten zwischen Stacks ab, sodass sie in der richtigen Reihenfolge bereitgestellt werden können. Sie können einen oder alle Stacks innerhalb einer App mit einem einzigen Befehl bereitstellen. cdk deploy

Der Konstruktbaum

Konstrukte werden innerhalb anderer Konstrukte mit dem scope Argument definiert, das an jedes Konstrukt übergeben wird, wobei die App Klasse die Wurzel ist. Auf diese Weise definiert eine AWS CDK App eine Hierarchie von Konstrukten, die als Konstruktbaum bezeichnet wird.

Die Wurzel dieses Baums ist Ihre App, die eine Instanz der App Klasse ist. Innerhalb der App instanziieren Sie einen oder mehrere Stapel. Innerhalb von Stacks instanziieren Sie Konstrukte, die wiederum Ressourcen oder andere Konstrukte instanziieren können, und so weiter im Baum.

Konstrukte werden immer explizit im Rahmen eines anderen Konstrukts definiert, wodurch Beziehungen zwischen Konstrukten hergestellt werden. Fast immer sollten Sie this (in Pythonself) als Gültigkeitsbereich übergeben, was darauf hinweist, dass das neue Konstrukt ein untergeordnetes Objekt des aktuellen Konstrukts ist. Das beabsichtigte Muster besteht darin, dass Sie Ihr Konstrukt ableiten und dann die Konstrukte instanziieren Construct, die es in seinem Konstruktor verwendet.

Die explizite Übergabe des Gültigkeitsbereichs ermöglicht es jedem Konstrukt, sich selbst zum Baum hinzuzufügen, wobei dieses Verhalten vollständig in der Basisklasse enthalten ist. Construct Es funktioniert in jeder Sprache, die von unterstützt wird, auf die gleiche Weise AWS CDK und erfordert keine zusätzliche Anpassung.

Wichtig

Technisch gesehen ist es möglich, einen anderen Bereich als this bei der Instanziierung eines Konstrukts zu übergeben. Sie können Konstrukte an einer beliebigen Stelle im Baum oder sogar in einem anderen Stapel in derselben App hinzufügen. Sie könnten beispielsweise eine Funktion im Mixin-Stil schreiben, die einem als Argument übergebenen Bereich Konstrukte hinzufügt. Die praktische Schwierigkeit dabei besteht darin, dass Sie nicht ohne Weiteres sicherstellen können, dass die Konstrukte, die IDs Sie für Ihre Konstrukte auswählen, innerhalb des Gültigkeitsbereichs einer anderen Person einzigartig sind. Diese Praxis macht es auch schwieriger, Ihren Code zu verstehen, zu verwalten und wiederzuverwenden. Daher empfehlen wir, die allgemeine Struktur des Konstruktbaums zu verwenden.

Der AWS CDK verwendet alle Konstrukte im Pfad IDs von der Wurzel des Baums bis zu jedem untergeordneten Konstrukt, um das für IDs erforderliche eindeutige Objekt zu generieren. AWS CloudFormation Dieser Ansatz bedeutet, dass Konstrukte IDs nur innerhalb ihres Gültigkeitsbereichs einzigartig sein müssen und nicht, wie bei der systemeigenen AWS CloudFormation Methode, innerhalb des gesamten Stacks. Wenn Sie ein Konstrukt jedoch in einen anderen Bereich verschieben, ändert sich die generierte eindeutige Stack-ID und es AWS CloudFormation wird nicht als dieselbe Ressource betrachtet.

Der Konstruktbaum unterscheidet sich von den Konstrukten, die Sie in Ihrem Code definieren. AWS CDK Er ist jedoch über das node Attribut eines beliebigen Konstrukts zugänglich. Dabei handelt es sich um einen Verweis auf den Knoten, der dieses Konstrukt im Baum darstellt. Jeder Knoten ist eine NodeInstanz, deren Attribute den Zugriff auf die Wurzel des Baums und auf die übergeordneten Bereiche und untergeordneten Bereiche des Knotens ermöglichen.

  1. node.children— Die direkten untergeordneten Elemente des Konstrukts.

  2. node.id— Der Bezeichner des Konstrukts innerhalb seines Gültigkeitsbereichs.

  3. node.path— Der vollständige Pfad des Konstrukts einschließlich IDs aller seiner Eltern.

  4. node.root— Die Wurzel des Konstruktbaums (die App).

  5. node.scope— Der Bereich (übergeordnetes Objekt) des Konstrukts oder undefiniert, wenn es sich bei dem Knoten um die Wurzel handelt.

  6. node.scopes— Alle übergeordneten Elemente des Konstrukts, bis zur Wurzel.

  7. node.uniqueId— Die eindeutige alphanumerische Kennung für dieses Konstrukt innerhalb des Baums (standardmäßig generiert aus node.path und ein Hash).

Der Konstruktbaum definiert eine implizite Reihenfolge, in der Konstrukte in der endgültigen Vorlage zu Ressourcen synthetisiert werden. AWS CloudFormation Dabei muss eine Ressource vor einer anderen erstellt werden, AWS CloudFormation oder die AWS Construct-Bibliothek leitet im Allgemeinen die Abhängigkeit ab. Sie stellen dann sicher, dass die Ressourcen in der richtigen Reihenfolge erstellt werden.

Sie können auch eine explizite Abhängigkeit zwischen zwei Knoten hinzufügen, indem Sie node.addDependency() Weitere Informationen finden Sie unter Abhängigkeiten in der AWS CDK API-Referenz.

Das AWS CDK bietet eine einfache Möglichkeit, jeden Knoten im Konstruktbaum zu besuchen und für jeden eine Operation auszuführen. Weitere Informationen finden Sie unter Aspekte und die AWS CDK.