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.
Arbeiten mit dem AWS CDK in Java
Java ist eine vollständig unterstützte Client-Sprache für die AWS CDK und gilt als stabil. Sie können AWS CDK Anwendungen in Java mit vertrauten Tools entwickeln, darunter die JDK (von Oracle oder eine offene JDK Distribution wie Amazon Corretto) und Apache Maven.
Die AWS CDK unterstützt Java 8 und höher. Wir empfehlen jedoch, die neueste Version zu verwenden, da spätere Versionen der Sprache Verbesserungen enthalten, die sich besonders für die Entwicklung von AWS CDK Anwendungen eignen. Zum Beispiel führt Java 9 die Map.of()
Methode ein (eine bequeme Methode, Hashmaps zu deklarieren, in TypeScript die sie als Objektliterale geschrieben würden). Java 10 führt die Inferenz lokaler Typen mithilfe des Schlüsselworts ein. var
Anmerkung
Die meisten Codebeispiele in diesem Entwicklerhandbuch funktionieren mit Java 8. Einige Beispiele verwendenMap.of()
; diese Beispiele enthalten Kommentare, in denen darauf hingewiesen wird, dass sie Java 9 benötigen.
Sie können einen beliebigen Texteditor oder ein Java, IDE das Maven-Projekte lesen kann, verwenden, um an Ihren AWS CDK Apps zu arbeiten. In diesem Handbuch finden Sie Hinweise zu Eclipse
Es ist möglich, AWS CDK Anwendungen in anderen JVM gehosteten Sprachen als Java zu schreiben (zum Beispiel Kotlin, Groovy, Clojure oder Scala), aber die Erfahrung ist möglicherweise nicht besonders idiomatisch, und wir können keine Unterstützung für diese Sprachen anbieten.
Themen
Fangen Sie an mit Java
Um mit dem arbeiten zu können AWS CDK, müssen Sie über ein AWS Konto und Anmeldeinformationen verfügen und Node.js und das AWS CDK Toolkit installiert haben. Siehe Erste Schritte mit dem AWS CDK.
AWS CDK Java-Anwendungen benötigen Java 8 (v1.8) oder höher. Wir empfehlen Amazon Corretto
Anmerkung
Veraltete Sprachversionen von Drittanbietern: Die Sprachversion wird nur solange unterstützt, bis sie EOL (End Of Life) vom Anbieter oder der Community veröffentlicht wird, und kann sich nach vorheriger Ankündigung ändern.
Erstellen eines Projekts
Sie erstellen ein neues AWS CDK Projekt, indem Sie es cdk init
in einem leeren Verzeichnis aufrufen. Verwenden Sie die --language
Option und geben Sie anjava
:
mkdir my-project cd my-project cdk init app --language java
cdk init
verwendet den Namen des Projektordners, um verschiedene Elemente des Projekts zu benennen, einschließlich Klassen, Unterordnern und Dateien. Bindestriche im Ordnernamen werden in Unterstriche umgewandelt. Ansonsten sollte der Name jedoch die Form eines Java-Bezeichners haben; er sollte beispielsweise nicht mit einer Zahl beginnen oder Leerzeichen enthalten.
Das daraus resultierende Projekt enthält einen Verweis auf das software.amazon.awscdk
Maven-Paket. Es und seine Abhängigkeiten werden automatisch von Maven installiert.
Wenn Sie ein verwendenIDE, können Sie das Projekt jetzt öffnen oder importieren. Wählen Sie in Eclipse beispielsweise „Datei“ > „Importieren“ > „Maven“ > „Bestehende Maven-Projekte“. Stellen Sie sicher, dass die Projekteinstellungen so eingestellt sind, dass sie Java 8 (1.8) verwenden.
Module der AWS Construct Library verwalten
Verwenden Sie Maven, um AWS Construct Library-Pakete zu installieren, die sich in der Gruppe software.amazon.awscdk
befinden. Die meisten Konstrukte befinden sich im Artefaktaws-cdk-lib
, das standardmäßig zu neuen Java-Projekten hinzugefügt wird. Module für Dienste, deren CDK Unterstützung auf höherer Ebene noch in der Entwicklung ist, befinden sich in separaten „experimentellen“ Paketen, die mit einer Kurzversion (kein AWS oder Amazon-Präfix) des Namens ihres Dienstes benannt sind. Suchen Sie im Maven Central Repository
Anmerkung
Die Java-Ausgabe der CDK API Referenz zeigt auch die Paketnamen.
Die AWS Construct Library-Unterstützung einiger Dienste erfolgt in mehr als einem Namespace. Die Funktionalität von Amazon Route 53 ist beispielsweise insoftware.amazon.awscdk.route53
, route53-patterns
route53resolver
, und unterteiltroute53-targets
.
Das AWS CDK Hauptpaket wird im Java-Code als importiertsoftware.amazon.awscdk
. Module für die verschiedenen Dienste in der AWS Construct-Bibliothek befinden sich unter software.amazon.awscdk.services
und sind ähnlich ihrem Maven-Paketnamen benannt. Der Namespace des Amazon S3 S3-Moduls lautet software.amazon.awscdk.services.s3
beispielsweise.
Wir empfehlen, für jede AWS Construct Library-Klasse, die Sie in jeder Ihrer Java-Quelldateien verwenden, eine separate import
Java-Anweisung zu schreiben und Platzhalter-Importe zu vermeiden. Sie können immer den vollständig qualifizierten Namen eines Typs (einschließlich seines Namespaces) ohne Anweisung verwenden. import
Wenn Ihre Anwendung von einem experimentellen Paket abhängt, bearbeiten Sie das Ihres Projekts pom.xml
und fügen Sie dem <dependencies>
Container ein neues <dependency>
Element hinzu. Das folgende <dependency>
Element spezifiziert beispielsweise das Bibliotheksmodul für CodeStar experimentelle Konstrukte:
<dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>codestar-alpha</artifactId> <version>2.0.0-alpha.10</version> </dependency>
Tipp
Wenn Sie Java verwendenIDE, verfügt es wahrscheinlich über Funktionen zur Verwaltung von Maven-Abhängigkeiten. Wir empfehlen jedoch, pom.xml
direkt zu bearbeiten, es sei denn, Sie sind sich absolut sicher, dass die IDE Funktionalität mit dem übereinstimmt, was Sie von Hand tun würden.
Verwaltung von Abhängigkeiten in Java
In Java werden Abhängigkeiten in Maven spezifiziert pom.xml
und installiert. Der <dependencies>
Container enthält ein <dependency>
Element für jedes Paket. Im Folgenden finden Sie einen Abschnitt pom.xml
für eine typische CDK Java-App.
<dependencies> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>aws-cdk-lib</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>appsync-alpha</artifactId> <version>2.10.0-alpha.0</version> </dependency> </dependencies>
Tipp
Viele IDEs Java-Programme verfügen über integrierte Maven-Unterstützung und visuelle pom.xml
Editoren, die Sie für die Verwaltung von Abhängigkeiten möglicherweise als praktisch erachten.
Maven unterstützt das Sperren von Abhängigkeiten nicht. Es ist zwar möglich, Versionsbereiche anzugebenpom.xml
, wir empfehlen jedoch, immer exakte Versionen zu verwenden, damit Ihre Builds wiederholbar bleiben.
Maven installiert automatisch transitive Abhängigkeiten, aber von jedem Paket kann nur eine Kopie installiert sein. Die Version, die am höchsten in der POM Struktur angegeben ist, wird ausgewählt. Anwendungen haben immer das letzte Wort darüber, welche Version von Paketen installiert wird.
Maven installiert oder aktualisiert Ihre Abhängigkeiten automatisch, wann immer Sie Ihr Projekt erstellen (mvn compile) oder verpacken (mvn package). Das CDK Toolkit macht dies bei jeder Ausführung automatisch, sodass es im Allgemeinen nicht erforderlich ist, Maven manuell aufzurufen.
AWS CDK Redewendungen in Java
Requisiten
Alle AWS Construct-Library-Klassen werden mit drei Argumenten instanziiert: dem Bereich, in dem das Konstrukt definiert wird (sein übergeordnetes Objekt im Konstruktbaum), einer ID und props, einem Bündel von Schlüssel/Wert-Paaren, die das Konstrukt verwendet, um die von ihm erstellten Ressourcen zu konfigurieren. Andere Klassen und Methoden verwenden ebenfalls das Muster „Bündel von Attributen“ für Argumente.
In Java werden Requisiten mit dem Builder-MusterBucket
Konstrukt (das einen Amazon S3 S3-Bucket darstellt) als Requisiten eine Instanz von. BucketProps
Die BucketProps
Klasse hat (wie jede Requisitenklasse der AWS Construct Library) eine innere Klasse namens. Builder
Der BucketProps.Builder
Typ bietet Methoden, um die verschiedenen Eigenschaften einer BucketProps
Instanz festzulegen. Jede Methode gibt die Builder
Instanz zurück, sodass die Methodenaufrufen verkettet werden können, um mehrere Eigenschaften festzulegen. Am Ende der Kette rufen Sie auf, build()
um das BucketProps
Objekt tatsächlich zu erzeugen.
Bucket bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps.Builder() .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build());
Konstrukte und andere Klassen, deren letztes Argument ein Objekt ist, das an Requisiten erinnert, bieten eine Abkürzung. Die Klasse hat eine eigene, Builder
die sie und ihr Props-Objekt in einem Schritt instanziiert. Auf diese Weise müssen Sie nicht explizit (zum Beispiel) sowohl als auch ein Objekt instanziieren Bucket
— BucketProps
und Sie benötigen auch keinen Import für den Typ Requisiten.
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();
Wenn Sie Ihr eigenes Konstrukt aus einem vorhandenen Konstrukt ableiten, möchten Sie möglicherweise zusätzliche Eigenschaften akzeptieren. Wir empfehlen Ihnen, diese Builder-Muster zu befolgen. Dies ist jedoch nicht so einfach wie die Unterteilung einer Konstruktklasse. Sie müssen die beweglichen Teile der beiden neuen Builder
Klassen selbst bereitstellen. Möglicherweise ziehen Sie es vor, dass Ihr Konstrukt einfach ein oder mehrere zusätzliche Argumente akzeptiert. Sie sollten zusätzliche Konstruktoren angeben, wenn ein Argument optional ist.
Generische Strukturen
In einigen APIs Fällen werden JavaScript Arrays oder untypisierte Objekte als Eingabe für eine Methode AWS CDK verwendet. (Siehe zum Beispiel die Methode.) AWS CodeBuildBuildSpec.fromObject()
In Java werden diese Objekte dargestellt alsjava.util.Map<String, Object>
. In Fällen, in denen es sich bei den Werten ausschließlich um Zeichenketten handelt, können Sie Folgendes verwendenMap<String, String>
.
Java bietet keine Möglichkeit, Literale für solche Container zu schreiben, wie dies in einigen anderen Sprachen der Fall ist. In Java 9 und höher können Sie java.util.Map.of()
java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )
Um Karten mit mehr als zehn Einträgen zu erstellen, verwenden Sie java.util.Map.ofEntries()
Wenn Sie Java 8 verwenden, könnten Sie Ihre eigenen Methoden bereitstellen, die diesen ähneln.
JavaScript Arrays werden als List<Object>
oder List<String>
in Java dargestellt. Die Methode java.util.Arrays.asList
ist praktisch, um kurze List
s zu definieren.
List<String> cmds = Arrays.asList("cd lambda", "npm install", "npm install typescript")
Fehlende Werte
In Java werden fehlende Werte in AWS CDK Objekten wie Requisiten durch null
dargestellt. Sie müssen jeden beliebigen Wert explizit testen, null
um sicherzustellen, dass er einen Wert enthält, bevor Sie etwas mit ihm tun. Java hat keinen „syntaktischen Zucker“, der beim Umgang mit Nullwerten hilft, wie es in einigen anderen Sprachen der Fall ist. Möglicherweise finden Sie ObjectUtil Apache defaultIfNull
CDKAnwendungen erstellen und ausführen
Der kompiliert Ihre App AWS CDK automatisch, bevor sie ausgeführt wird. Es kann jedoch nützlich sein, Ihre App manuell zu erstellen, um nach Fehlern zu suchen und Tests durchzuführen. Sie können dies in Ihrem tun IDE (drücken Sie beispielsweise Strg-B in Eclipse) oder indem Sie es mvn compile
an einer Befehlszeile eingeben, während Sie sich im Stammverzeichnis Ihres Projekts befinden.
Führen Sie alle Tests aus, die Sie geschrieben haben, indem Sie sie mvn test
an einer Befehlszeile ausführen.