Travailler avec le AWS CDK en Java - AWS Cloud Development Kit (AWS CDK) v2

Ceci est le guide du AWS CDK développeur de la version 2. L'ancienne CDK version 1 est entrée en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Travailler avec le AWS CDK en Java

Java est un langage client entièrement pris en charge pour le AWS CDK et est considéré comme stable. Vous pouvez développer AWS CDK des applications en Java à l'aide d'outils familiers, notamment JDK (Oracle ou une JDK distribution Open telle qu'Amazon Corretto) et Apache Maven.

AWS CDK Supporte Java 8 et versions ultérieures. Nous vous recommandons toutefois d'utiliser la dernière version possible, car les versions ultérieures du langage incluent des améliorations particulièrement pratiques pour le développement d' AWS CDK applications. Par exemple, Java 9 introduit la Map.of() méthode (un moyen pratique de déclarer des hashmaps qui seraient écrits sous forme de littéraux d'objets). TypeScript Java 10 introduit l'inférence de type local à l'aide du var mot clé.

Note

La plupart des exemples de code présentés dans ce guide du développeur fonctionnent avec Java 8. Quelques exemples d'utilisation Map.of() ; ces exemples incluent des commentaires indiquant qu'ils nécessitent Java 9.

Vous pouvez utiliser n'importe quel éditeur de texte ou un Java IDE capable de lire les projets Maven pour travailler sur vos AWS CDK applications. Nous fournissons des conseils sur Eclipse dans ce guide, mais IntelliJ IDEA et d'autres IDEs peuvent importer des projets Maven et peuvent être utilisés pour développer des AWS CDK applications en Java. NetBeans

Il est possible d'écrire AWS CDK des applications dans des JVM langages hébergés autres que Java (par exemple, Kotlin, Groovy, Clojure ou Scala), mais l'expérience n'est peut-être pas particulièrement idiomatique et nous ne sommes pas en mesure de fournir un support pour ces langages.

Premiers pas avec Java

Pour utiliser le AWS CDK, vous devez disposer d'un AWS compte et d'informations d'identification et avoir installé Node.js et le AWS CDK Toolkit. Consultez Commencer à utiliser le AWS CDK.

AWS CDK Les applications Java nécessitent Java 8 (v1.8) ou version ultérieure. Nous recommandons Amazon Corretto, mais vous pouvez utiliser n'importe quelle distribution JDK Open ou Oracle. JDK Vous aurez également besoin d'Apache Maven 3.5 ou version ultérieure. Vous pouvez également utiliser des outils tels que Gradle, mais les squelettes d'applications générés par le AWS CDK Toolkit sont des projets Maven.

Note

Obsolète linguistique tierce : la version linguistique n'est prise en charge que jusqu'à sa EOL (fin de vie) partagée par le fournisseur ou la communauté et est sujette à modification avec préavis.

Création d’un projet

Vous créez un nouveau AWS CDK projet en l'invoquant cdk init dans un répertoire vide. Utilisez l'--languageoption et spécifiez java :

mkdir my-project cd my-project cdk init app --language java

cdk initutilise le nom du dossier du projet pour nommer les différents éléments du projet, notamment les classes, les sous-dossiers et les fichiers. Les traits d'union figurant dans le nom du dossier sont convertis en traits de soulignement. Toutefois, le nom doit sinon prendre la forme d'un identifiant Java ; par exemple, il ne doit pas commencer par un chiffre ni contenir d'espaces.

Le projet qui en résulte inclut une référence au package software.amazon.awscdk Maven. Il et ses dépendances sont automatiquement installés par Maven.

Si vous utilisez unIDE, vous pouvez désormais ouvrir ou importer le projet. Dans Eclipse, par exemple, choisissez Fichier > Importer > Maven > Projets Maven existants. Assurez-vous que les paramètres du projet sont définis pour utiliser Java 8 (1.8).

Gestion des modules AWS de la bibliothèque Construct

Utilisez Maven pour installer les packages AWS Construct Library, qui se trouvent dans le groupesoftware.amazon.awscdk. La plupart des constructions se trouvent dans l'artefactaws-cdk-lib, qui est ajouté aux nouveaux projets Java par défaut. Les modules pour les services dont le CDK support de haut niveau est encore en cours de développement se trouvent dans des packages « expérimentaux » distincts, nommés avec une version courte (aucun ou préfixe AWS Amazon) du nom de leur service. Effectuez une recherche dans le référentiel central Maven pour trouver les noms de toutes les bibliothèques AWS CDK et AWS Construct Module.

Note

L'édition Java de la CDK API référence indique également les noms des packages.

La prise en charge de la bibliothèque AWS Construct par certains services se trouve dans plusieurs espaces de noms. Par exemple, les fonctionnalités d'Amazon Route 53 sont divisées en software.amazon.awscdk.route53route53-patterns,route53resolver, etroute53-targets.

Le AWS CDK package principal est importé en code Java en tant quesoftware.amazon.awscdk. Les modules des différents services de la bibliothèque AWS Construct se trouvent sous software.amazon.awscdk.services le même nom que leur package Maven. Par exemple, l'espace de noms du module Amazon S3 estsoftware.amazon.awscdk.services.s3.

Nous vous recommandons d'écrire une import instruction Java distincte pour chaque classe de bibliothèque de AWS construction que vous utilisez dans chacun de vos fichiers source Java, et d'éviter les importations de caractères génériques. Vous pouvez toujours utiliser le nom complet d'un type (y compris son espace de noms) sans instruction. import

Si votre application dépend d'un package expérimental, modifiez celle de votre projet pom.xml et ajoutez un nouvel <dependency> élément dans le <dependencies> conteneur. Par exemple, l'<dependency>élément suivant spécifie le module de bibliothèque de constructions CodeStar expérimentales :

<dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>codestar-alpha</artifactId> <version>2.0.0-alpha.10</version> </dependency>
Astuce

Si vous utilisez un JavaIDE, il possède probablement des fonctionnalités permettant de gérer les dépendances de Maven. Nous vous recommandons toutefois de modifier pom.xml directement, sauf si vous êtes absolument certain que les IDE fonctionnalités correspondent à ce que vous feriez à la main.

Gestion des dépendances dans Java

En Java, les dépendances sont spécifiées pom.xml et installées à l'aide de Maven. Le <dependencies> contenant comprend un <dependency> élément pour chaque emballage. Voici une section consacrée pom.xml à une application CDK Java typique.

<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>
Astuce

De nombreux Java IDEs intègrent le support Maven et des pom.xml éditeurs visuels, ce qui peut vous être utile pour gérer les dépendances.

Maven ne prend pas en charge le verrouillage des dépendances. Bien qu'il soit possible de spécifier des plages de versionspom.xml, nous vous recommandons de toujours utiliser des versions exactes pour garantir la répétabilité de vos versions.

Maven installe automatiquement les dépendances transitives, mais il ne peut y avoir qu'une seule copie installée de chaque package. La version spécifiée le plus haut dans l'POMarborescence est sélectionnée ; les applications ont toujours le dernier mot quant à la version des packages à installer.

Maven installe ou met à jour automatiquement vos dépendances chaque fois que vous compilez (mvn compile) ou empaquetez (mvn package) votre projet. Le CDK Toolkit le fait automatiquement à chaque fois que vous l'exécutez, il n'est donc généralement pas nécessaire d'invoquer Maven manuellement.

AWS CDK expressions idiomatiques en Java

accessoires

Toutes les classes de la bibliothèque de AWS construction sont instanciées à l'aide de trois arguments : la portée dans laquelle la construction est définie (son parent dans l'arbre de construction), un identifiant, et props, un ensemble de paires clé/valeur que la construction utilise pour configurer les ressources qu'elle crée. D'autres classes et méthodes utilisent également le modèle « bundle of attributes » pour les arguments.

En Java, les accessoires sont exprimés à l'aide du modèle Builder. Chaque type de construction possède un type d'accessoire correspondant ; par exemple, la Bucket construction (qui représente un compartiment Amazon S3) prend comme accessoires une instance de. BucketProps

La BucketProps classe (comme toutes les classes d'accessoires AWS Construct Library) possède une classe interne appeléeBuilder. Le BucketProps.Builder type propose des méthodes pour définir les différentes propriétés d'une BucketProps instance. Chaque méthode renvoie l'Builderinstance, de sorte que les appels de méthode peuvent être enchaînés pour définir plusieurs propriétés. À la fin de la chaîne, vous appelez build() pour réellement produire l'BucketPropsobjet.

Bucket bucket = new Bucket(this, "MyBucket", new BucketProps.Builder() .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build());

Les constructions, ainsi que les autres classes qui prennent un objet semblable à un accessoire comme argument final, proposent un raccourci. La classe possède son propre objet qui Builder l'instancie ainsi que son objet props en une seule étape. De cette façon, vous n'avez pas besoin d'instancier explicitement (par exemple) à la fois BucketProps et a, et Bucket vous n'avez pas besoin d'importer le type d'accessoire.

Bucket bucket = Bucket.Builder.create(this, "MyBucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();

Lorsque vous dérivez votre propre construction à partir d'une construction existante, vous souhaiterez peut-être accepter des propriétés supplémentaires. Nous vous recommandons de suivre ces modèles de création. Cependant, cela n'est pas aussi simple que de sous-classer une classe de construction. Vous devez fournir vous-même les pièces mobiles des deux nouvelles Builder classes. Vous préférerez peut-être simplement que votre construction accepte un ou plusieurs arguments supplémentaires. Vous devez fournir des constructeurs supplémentaires lorsqu'un argument est facultatif.

Structures génériques

Dans certains casAPIs, ils AWS CDK utilisent des JavaScript tableaux ou des objets non typés comme entrée dans une méthode. (Voir, par exemple, AWS CodeBuild la BuildSpec.fromObject()méthode.) En Java, ces objets sont représentés parjava.util.Map<String, Object>. Dans les cas où les valeurs sont toutes des chaînes, vous pouvez utiliserMap<String, String>.

Java ne permet pas d'écrire des littéraux pour de tels conteneurs comme le font d'autres langages. Dans Java 9 et versions ultérieures, vous pouvez facilement java.util.Map.of()définir des cartes comportant jusqu'à dix entrées en ligne avec l'un de ces appels.

java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )

Pour créer des cartes comportant plus de dix entrées, utilisez java.util.Map.ofEntries().

Si vous utilisez Java 8, vous pouvez fournir vos propres méthodes similaires à celles-ci.

JavaScript les tableaux sont représentés sous la forme List<Object> ou List<String> en Java. La méthode java.util.Arrays.asList est pratique pour définir List un s court.

List<String> cmds = Arrays.asList("cd lambda", "npm install", "npm install typescript")

Valeurs manquantes

En Java, les valeurs manquantes dans AWS CDK des objets tels que les accessoires sont représentées parnull. Vous devez tester explicitement toute valeur qui pourrait l'être null pour vous assurer qu'elle contient une valeur avant de faire quoi que ce soit avec elle. Java n'a pas de « sucre syntaxique » pour aider à gérer les valeurs nulles comme le font certains autres langages. Apache ObjectUtil peut vous être firstNonNullutile dans certaines situations. defaultIfNull Vous pouvez également écrire vos propres méthodes d'assistance statiques pour faciliter la gestion des valeurs potentiellement nulles et rendre votre code plus lisible.

Créez et exécutez CDK des applications

Compile AWS CDK automatiquement votre application avant de l'exécuter. Cependant, il peut être utile de créer votre application manuellement pour vérifier les erreurs et exécuter des tests. Vous pouvez le faire dans votre IDE (par exemple, appuyez sur Ctrl-B dans Eclipse) ou en lançant mvn compile une invite de commande dans le répertoire racine de votre projet.

Exécutez tous les tests que vous avez écrits mvn test à l'aide d'une invite de commande.