Cómo usar AWS Cloud Development Kit con Java

Aprende a utilizar AWS Cloud Development Kit (AWS CDK) con Java para definir y desplegar infraestructura en la nube mediante código.

UnimediaActualizado 18 de diciembre de 20236 min de lectura

Cómo usar AWS Cloud Development Kit con Java

En este artículo aprenderás a utilizar AWS Cloud Development Kit con Java. ¡Empecemos!

También te puede interesar: «React 18: novedades principales»

Introducción a AWS Cloud Development Kit

AWS CDK permite crear aplicaciones en la nube con la capacidad expresiva de un lenguaje de programación. Está pensado para personas con una experiencia media o avanzada en los servicios de AWS. Veamos algunos conceptos clave para crear aplicaciones con AWS CDK.

Flujo de AWS CDK desde los constructos de la aplicación hasta CloudFormation y los recursos desplegados

Fuente de la imagen

  • Una aplicación utiliza AWS CDK para definir la infraestructura de AWS. Puedes escribir aplicaciones CDK en lenguajes compatibles con AWS, como TypeScript, JavaScript, Python, Java o C#.
  • Una aplicación puede contener una o varias pilas.
  • Las pilas contienen constructos y equivalen a las pilas de AWS CloudFormation.
  • Los constructos definen recursos de AWS, como Amazon RDS, DynamoDB, buckets de S3 o funciones Lambda.
  • Las pilas, los constructos y las aplicaciones se representan mediante clases. Los constructos se instancian dentro de una pila para declararlos en AWS y conectarlos entre sí mediante interfaces bien definidas.

Estos conceptos resultarán más claros después de implementar la aplicación de ejemplo sample-cdk-project.

Requisitos previos

Primero, instala AWS CLI en tu equipo. También necesitarás una clave de acceso y una clave secreta proporcionadas por la persona administradora de la cuenta de AWS.

Comprueba que la instalación se ha completado correctamente con el siguiente comando:

aws –version

A continuación, configura AWS CLI en tu equipo:

aws configure

Introduce el identificador de la clave de acceso de AWS, la clave de acceso secreta, la región predeterminada y el formato de salida predeterminado.

Terminal que muestra la versión y la configuración de AWS CLI

Primeros pasos con AWS CDK y Java

Instalar AWS CDK Toolkit

CDK Toolkit es una herramienta para trabajar con aplicaciones y pilas de AWS CDK. Permite convertir una o varias pilas en plantillas de CloudFormation y sus recursos asociados, además de desplegarlas en una cuenta de AWS. Instala AWS CDK Toolkit mediante Node Package Manager con el siguiente comando:

npm install -g aws-cdk

Inicializar una aplicación CDK de ejemplo

Crea un directorio para la aplicación CDK de ejemplo:

mkdir sample-cdk-project

Después, conviértelo en el directorio de trabajo.

cdk sample-cdk-project

Ejecuta el siguiente comando para crear una aplicación CDK de ejemplo con Java:

cdk init --language java

Veamos qué contiene el proyecto.

Entender la aplicación CDK de ejemplo

Puedes abrir el proyecto en el IDE que prefieras. El directorio tendrá la estructura que se muestra a continuación. Revisaremos los archivos SampleCdkProjectStack.java y SampleCdkProjectApp.java por separado.

Estructura de un proyecto Java de AWS CDK en un IDE

SampleCdkProjectStack.java

Esta es la pila predeterminada de sample-cdk-project. Para empezar, descomenta el recurso de ejemplo. SampleCdkProjectStack extiende la clase base Stack e incluye una cola de Amazon SQS con un tiempo de espera de 300 segundos para procesar cada mensaje. Los constructos representan componentes de la nube y son las unidades básicas de una aplicación AWS CDK. En el ejemplo siguiente, la cola de Amazon SQS es un constructo. Todos los constructos reciben tres parámetros al inicializarse: scope, id y props.

  • scope es el constructo dentro del cual se define el nuevo constructo.
  • id es un identificador que debe ser único dentro de ese ámbito.
  • props reúne las propiedades o los argumentos con nombre —según el lenguaje— que definen la configuración inicial del constructo.
public class SampleCdkProjectStack extends Stack {
     public SampleCdkProjectStack(final Construct scope, final String id) {
        this(scope, id, null);
    }
    public SampleCdkProjectStack(final Construct scope, final String id, final StackProps props) {
        super(scope, id, props);
        // The code that defines your stack goes here
    /* final Queue queue = Queue.Builder.create(this, "SampleCdkProjectQueue")
        .visibilityTimeout(Duration.seconds(300))
        .build(); */
    }
}

SampleCdkProjectApp.java

Veamos ahora SampleCdkProjectApp.java. En este archivo se instancia la pila definida anteriormente dentro de un ámbito para poder desplegarla. La clase crea una instancia de SampleCdkProjectStack y genera la plantilla de AWS CloudFormation definida por la pila. También inicializa el constructo App, que se utiliza como ámbito de la instancia de SampleCdkProjectStack.

public class SampleCdkProjectApp {
   public static void main(final String[] args) {
      App app = new App();
      new SampleCdkProjectStack(app, "SampleCdkProjectStack", StackProps.builder()
   /*If you don't specify 'env', this stack will be environment-agnostic.
     Account/Region-dependent features and context lookups will not work,
     but you can deploy a single synthesized template anywhere.
     Uncomment the next block to specialize this stack for the AWS Account
     and Region that is implied by the current CLI configuration. */
     /* .env(Environment.builder()
        .account(System.getenv("CDK_DEFAULT_ACCOUNT"))
        .region(System.getenv("CDK_DEFAULT_REGION"))
        .build()) */
      /*Uncomment the next block if you know exactly what Account and Region you
       want to deploy the stack to */
        .env(Environment.builder()
        .account("123456789012")
        .region("us-east-1")
        .build()) */
      //For more information, see https://docs.aws.amazon.com/cdk/latest/guide/environments.html
        .build());
        app.synth();
     }
}

En la clase anterior, descomenta el código que adapta la pila a la cuenta y la región de AWS indicadas en la configuración actual de AWS CLI.

Preparar el entorno de la aplicación CDK

Al desplegar aplicaciones AWS CDK en un entorno de AWS, pueden hacer falta recursos auxiliares, como un bucket de Amazon S3 para almacenar archivos o roles de IAM con los permisos necesarios. El proceso que crea estos recursos se denomina bootstrapping.

Estos recursos se definen en una pila de AWS CloudFormation llamada CDKToolkit. El siguiente comando despliega esa pila de preparación:

cdk bootstrap

Salida del terminal al preparar un entorno de AWS CDK

Puedes consultar los recursos en la plantilla de CloudFormation de CDKToolkit.

Recursos creados en la pila CDKToolkit de CloudFormation

Sintetizar la plantilla de CloudFormation

El siguiente comando sintetiza y muestra la plantilla de CloudFormation. Si la aplicación contiene más de una pila, tendrás que indicar cuál quieres procesar. En este ejemplo no es necesario porque solo hay una.

cdk synth

Plantilla de CloudFormation generada por el comando cdk synth

Desplegar la aplicación CDK

Ejecuta el siguiente comando para desplegar los recursos definidos en la pila de la aplicación CDK:

cdk deploy

Terminal que muestra el despliegue correcto de la pila de ejemplo de AWS CDK

Puedes consultar los recursos en la plantilla de CloudFormation de SampleCdkProjectStack.

Consola de Amazon CloudFormation con la pila CDK de ejemplo y sus recursos

Esta es la cola de Amazon SQS definida en la pila.

Consola de Amazon SQS con la cola creada por la pila CDK de ejemplo

Por último, elimina los recursos de sample-cdk-project con el siguiente comando:

cdk destroy

Terminal que muestra la eliminación correcta de la pila de ejemplo de AWS CDK

Conclusión

Ya conoces los fundamentos de AWS Cloud Development Kit y has creado una aplicación CDK con Java. Si quieres seguir practicando, consulta el repositorio oficial de ejemplos de AWS CDK en GitHub, que incluye varios proyectos desarrollados en Java.

Seguiremos publicando contenidos prácticos como este. Puedes dejarnos tus comentarios y sugerencias.

¡Buen aprendizaje!

Referencia

https://docs.aws.amazon.com/cdk/v2/guide/home.html

Unimedia Technology

En Unimedia Technology contamos con un equipo de especialistas en desarrollo cloud native que puede ayudarte a crear aplicaciones complejas en AWS y Azure.

Seguir leyendo

Más sobre AWS

Reserva una consulta gratuita

Cargando el calendario…

¿No carga el calendario? Ábrelo en una pestaña nueva, o llámanos al +34 936 01 40 40.