Esta es la guía para AWS CDK desarrolladores de la versión 2. La CDK versión anterior entró en mantenimiento el 1 de junio de 2022 y finalizó el soporte el 1 de junio de 2023.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Trabajando con el AWS CDK en Java
Java es un lenguaje de cliente totalmente compatible AWS CDK y se considera estable. Puede desarrollar AWS CDK aplicaciones en Java utilizando herramientas conocidas, como Oracle o una JDK distribución abierta como Amazon Corretto y Apache Maven. JDK
AWS CDK Es compatible con Java 8 y versiones posteriores. Sin embargo, le recomendamos que utilice la versión más reciente posible, ya que las versiones posteriores del lenguaje incluyen mejoras que son especialmente prácticas para el desarrollo de AWS CDK aplicaciones. Por ejemplo, Java 9 introduce el Map.of()
método (una forma práctica de declarar mapas hash que se escribirían como objetos literales). TypeScript Java 10 introduce la inferencia de tipos locales mediante la palabra clave. var
nota
La mayoría de los ejemplos de código de esta guía para desarrolladores funcionan con Java 8. Algunos ejemplos utilizanMap.of()
; estos ejemplos incluyen comentarios en los que se indica que requieren Java 9.
Puedes usar cualquier editor de texto, o un Java IDE que pueda leer proyectos de Maven, para trabajar en tus AWS CDK aplicaciones. En esta guía proporcionamos consejos sobre Eclipse
Es posible escribir AWS CDK aplicaciones en lenguajes JVM hospedados distintos de Java (por ejemplo, Kotlin, Groovy, Clojure o Scala), pero es posible que la experiencia no sea particularmente idiomática y no podamos ofrecer ningún tipo de soporte para estos lenguajes.
Temas
Comience con Java
Para trabajar con el AWS CDK, debe tener una AWS cuenta y credenciales y tener instalados Node.js y el AWS CDK kit de herramientas. Consulte Cómo empezar con el AWS CDK.
AWS CDK Las aplicaciones Java requieren Java 8 (v1.8) o posterior. Recomendamos Amazon Corretto
nota
Degradación de idiomas de terceros: la versión lingüística solo se admite hasta que el proveedor o la comunidad la compartan EOL (al final de su vida útil) y está sujeta a cambios con previo aviso.
Creación de un proyecto
Para crear un AWS CDK proyecto nuevo, se invoca cdk init
en un directorio vacío. Utilice la --language
opción y especifiquejava
:
mkdir my-project cd my-project cdk init app --language java
cdk init
usa el nombre de la carpeta del proyecto para nombrar varios elementos del proyecto, incluidas las clases, las subcarpetas y los archivos. Los guiones del nombre de la carpeta se convierten en guiones bajos. Sin embargo, de lo contrario, el nombre debe seguir la forma de un identificador de Java; por ejemplo, no debe empezar por un número ni contener espacios.
El proyecto resultante incluye una referencia al paquete software.amazon.awscdk
Maven. Maven lo instala automáticamente y sus dependencias.
Si está utilizando unIDE, ahora puede abrir o importar el proyecto. En Eclipse, por ejemplo, selecciona Archivo > Importar > Maven > Proyectos Maven existentes. Asegúrese de que los ajustes del proyecto estén configurados para utilizar Java 8 (1.8).
Gestión de los módulos de AWS Construct Library
Use Maven para instalar los paquetes de AWS Construct Library, que están en el gruposoftware.amazon.awscdk
. La mayoría de las construcciones se encuentran en el artefactoaws-cdk-lib
, que se añade a los nuevos proyectos de Java de forma predeterminada. Los módulos para los servicios cuyo CDK soporte de nivel superior aún se está desarrollando se encuentran en paquetes «experimentales» separados, denominados con una versión abreviada (no AWS o con el prefijo de Amazon) del nombre de su servicio. Busca en el repositorio central de Maven
nota
La edición Java de la CDK API Referencia también muestra los nombres de los paquetes.
La compatibilidad con AWS Construct Library de algunos servicios está en más de un espacio de nombres. Por ejemplo, Amazon Route 53 tiene su funcionalidad dividida en software.amazon.awscdk.route53
route53-patterns
,route53resolver
, yroute53-targets
.
El AWS CDK paquete principal se importa en código Java comosoftware.amazon.awscdk
. Los módulos de los distintos servicios de la biblioteca AWS Construct se encuentran bajo el nombre de su paquete de Maven software.amazon.awscdk.services
y reciben un nombre similar al de su paquete. Por ejemplo, el espacio de nombres del módulo Amazon S3 es. software.amazon.awscdk.services.s3
Le recomendamos escribir una import
sentencia Java independiente para cada clase de AWS Construct Library que utilice en cada uno de sus archivos fuente de Java y evitar la importación de caracteres comodín. Siempre puedes usar el nombre completo de un tipo (incluido su espacio de nombres) sin ninguna instrucción. import
Si tu aplicación depende de un paquete experimental, edita la de tu proyecto pom.xml
y añade un nuevo <dependency>
elemento al contenedor. <dependencies>
Por ejemplo, el siguiente <dependency>
elemento especifica el módulo de biblioteca de construcciones CodeStar experimentales:
<dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>codestar-alpha</artifactId> <version>2.0.0-alpha.10</version> </dependency>
sugerencia
Si usa JavaIDE, probablemente tenga funciones para administrar las dependencias de Maven. Sin embargo, te recomendamos editarlo pom.xml
directamente, a menos que estés absolutamente seguro de que IDE la funcionalidad coincide con la que harías a mano.
Administrar las dependencias en Java
En Java, las dependencias se especifican pom.xml
e instalan mediante Maven. El <dependencies>
contenedor incluye un <dependency>
elemento para cada paquete. La siguiente es una sección pom.xml
de una aplicación CDK Java típica.
<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>
sugerencia
Muchas aplicaciones de Java IDEs tienen el soporte de Maven integrado y pom.xml
editores visuales, lo que puede resultarle práctico para gestionar las dependencias.
Maven no admite el bloqueo de dependencias. Aunque es posible especificar rangos de versionespom.xml
, te recomendamos que utilices siempre versiones exactas para que tus compilaciones se puedan repetir.
Maven instala automáticamente las dependencias transitivas, pero solo puede haber una copia instalada de cada paquete. Se selecciona la versión que se especifique en la parte superior del POM árbol; las aplicaciones siempre tienen la última palabra en qué versión de los paquetes se instalan.
Maven instala o actualiza automáticamente tus dependencias cada vez que compilas (mvn compile) o empaques () tu proyectomvn package. El CDK kit de herramientas lo hace automáticamente cada vez que lo ejecutas, por lo que, por lo general, no es necesario invocar Maven manualmente.
AWS CDK modismos en Java
Utilería
Todas las clases de AWS Construct Library se instancian mediante tres argumentos: el ámbito en el que se define la construcción (su elemento principal en el árbol de construcciones), un identificador y props, un conjunto de pares clave/valor que la construcción utiliza para configurar los recursos que crea. Otras clases y métodos también utilizan el patrón de «conjunto de atributos» como argumento.
En Java, los accesorios se expresan mediante el patrón Builder.Bucket
construcción (que representa un bucket de Amazon S3) toma como accesorios una instancia de. BucketProps
La BucketProps
clase (como todas las clases de props de AWS Construct Library) tiene una clase interna llamada. Builder
El BucketProps.Builder
tipo ofrece métodos para establecer las distintas propiedades de una BucketProps
instancia. Cada método devuelve la Builder
instancia, por lo que las llamadas a los métodos se pueden encadenar para establecer varias propiedades. Al final de la cadena, se llama build()
para producir realmente el BucketProps
objeto.
Bucket bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps.Builder() .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build());
Los constructos y otras clases que utilizan como argumento final un objeto similar a un accesorio ofrecen un atajo. La clase tiene una propia que crea una instancia Builder
de ella y de su objeto props en un solo paso. De esta forma, no necesitas crear una instancia explícita (por ejemplo) tanto como unBucket
, BucketProps
y no necesitas importar el tipo props.
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();
Al derivar tu propia construcción a partir de una construcción existente, es posible que desees aceptar propiedades adicionales. Le recomendamos que siga estos patrones de construcción. Sin embargo, esto no es tan simple como subclasificar una clase de construcción. Debes proporcionar tú mismo las partes móviles de las dos nuevas Builder
clases. Es posible que prefiera que su construcción simplemente acepte uno o más argumentos adicionales. Debe proporcionar constructores adicionales cuando un argumento sea opcional.
Estructuras genéricas
En algunasAPIs, AWS CDK utiliza JavaScript matrices u objetos sin tipo como entrada a un método. (Consulte, por ejemplo, el método AWS CodeBuild de BuildSpec.fromObject()
.) En Java, estos objetos se representan comojava.util.Map<String, Object>
. En los casos en que los valores son todos cadenas, puede utilizarMap<String, String>
.
Java no proporciona una forma de escribir literales para dichos contenedores como lo hacen otros lenguajes. En Java 9 y versiones posteriores, se pueden utilizar java.util.Map.of()
java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )
Para crear mapas con más de diez entradas, utilice java.util.Map.ofEntries()
Si utiliza Java 8, puede proporcionar sus propios métodos similares a estos.
JavaScript las matrices se representan como List<Object>
o List<String>
en Java. El método java.util.Arrays.asList
es conveniente para definir List
s. cortas.
List<String> cmds = Arrays.asList("cd lambda", "npm install", "npm install typescript")
Valores faltantes
En Java, los valores que faltan en AWS CDK objetos como los accesorios se representan mediantenull
. Debe probar explícitamente cualquier valor que pueda existir null
para asegurarse de que contiene un valor antes de hacer cualquier cosa con él. Java no tiene un «azúcar sintáctico» que ayude a gestionar los valores nulos, como ocurre en otros lenguajes. Puede que el uso ObjectUtil de defaultIfNull
Cree y ejecute aplicaciones CDK
Compila AWS CDK automáticamente tu aplicación antes de ejecutarla. Sin embargo, puede resultar útil compilar la aplicación manualmente para comprobar si hay errores y realizar pruebas. Puedes hacerlo en tu ordenador IDE (por ejemplo, pulsando Control-B en Eclipse) o ejecutándolo mvn compile
en una línea de comandos desde el directorio raíz de tu proyecto.
Ejecuta cualquier prueba que hayas escrito mvn test
en una línea de comandos.