Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Arbeiten mit dem AWS CDK in Java

Fokusmodus
Arbeiten mit dem AWS CDK in Java - 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.

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.

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 das JDK (das von Oracle oder eine OpenJDK-Distribution wie Amazon Corretto) und Apache Maven.

Das 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 eine Java-IDE verwenden, die Maven-Projekte lesen kann, um an Ihren AWS CDK Apps zu arbeiten. In diesem Handbuch finden Sie Hinweise zu Eclipse, aber IntelliJ IDEA und andere IDEs können Maven-Projekte importieren und für die Entwicklung von AWS CDK Anwendungen in Java verwendet werden. NetBeans

Es ist möglich, AWS CDK Anwendungen in anderen von JVM gehosteten Sprachen als Java zu schreiben (z. B. Kotlin, Groovy, Clojure oder Scala), aber die Erfahrung ist möglicherweise nicht besonders idiomatisch, und wir können keinen Support für diese Sprachen anbieten.

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, aber Sie können jede OpenJDK-Distribution oder das JDK von Oracle verwenden. Sie benötigen außerdem Apache Maven 3.5 oder höher. Sie können auch Tools wie Gradle verwenden, aber die vom AWS CDK Toolkit generierten Anwendungsskelette sind Maven-Projekte.

Anmerkung

Veraltete Sprachversionen von Drittanbietern: Die Sprachversion wird nur bis zu ihrem EOL (End Of Life) unterstützt, das vom Anbieter oder der Community geteilt wird. Änderungen können mit vorheriger Ankündigung vorgenommen werden.

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 initverwendet 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 eine IDE verwenden, 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 nach den Namen aller Bibliotheken AWS CDK und AWS Construct-Module.

Anmerkung

Die Java-Ausgabe der CDK API Reference 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-patternsroute53resolver, 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 Namespace) 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 eine Java-IDE verwenden, verfügt sie 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 Funktionalität der IDE 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

In vielen IDEs Java-Versionen sind Maven-Unterstützung und visuelle pom.xml Editoren integriert, die Sie möglicherweise für die Verwaltung von Abhängigkeiten 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 im POM-Baum am höchsten 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 automatisch bei jeder Ausführung, sodass es im Allgemeinen nicht notwendig 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-Muster ausgedrückt. Jeder Konstrukttyp hat einen entsprechenden Requisitentyp. Beispielsweise verwendet das Bucket 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 BucketBucketProps 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()damit bequem Zuordnungen mit bis zu zehn Einträgen innerhalb eines dieser Aufrufe definieren.

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 defaultIfNullund in einigen Situationen firstNonNullnützlich. Alternativ können Sie Ihre eigenen statischen Hilfsmethoden schreiben, um den Umgang mit potenziell Nullwerten zu vereinfachen und Ihren Code lesbarer zu machen.

CDK-Anwendungen 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 Ihrer IDE tun (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.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.