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
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.
Rubriques
Commencez 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
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'--language
option et spécifiez java
:
mkdir my-project cd my-project cdk init app --language java
cdk init
utilise 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
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.route53
route53-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.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'Builder
instance, 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'BucketProps
objet.
Bucket bucket = new Bucket(this, "amzn-s3-demo-bucket", 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, "amzn-s3-demo-bucket") .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()
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 firstNonNull
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.