Lecciones

Cómo configurar AWS SDK para Java

Escrito por Jhoan Steven Delgado | 28 de junio de 2021

En esta Lección aprenderemos a configurar el SDK de AWS para Java. Además, realizaremos un ejemplo práctico implementando S3.

Antes de iniciar, verifica nuestra Lección Configurando AWS CLI y IAM profile, donde también encontrarás los perrequisitos que necesitas.  También puedes ver la Lección Cómo configurar el SDK de AWS para Nodejs

2. Ingresamos un nombre a nuestro proyecto, (en este caso S3Example) y hacemos click en next, luego en finish.

3. Si aparece una ventana requiriendo que creemos un módulo java, le damos click en don’t create.

4. Ahora que ya tenemos creado nuestro proyecto Java, sólo falta convertirlo a un proyecto Java con Maven para realizar la gestión de dependencias del SDK de AWS. Hacemos click derecho sobre la carpeta del proyecto general (en este caso S3Example), seleccionamos configure, y luego hacemos click en convert to Maven Project.

5. Nos aparecerá una ventana sobre la configuración del POM, dejamos todo de forma predeterminada y hacemos click en finish.

6. Nos dirigimos al archivo nuevo POM.xml (que es donde gestionaremos nuestras dependecias con Maven) para ingresar las dependencia de AWS SDK. Luego del cierre de Build, copiamos el código que encontramos a continuación:

Código módulo a módulo (Solo S3):

<dependencyManagement>
                           <dependencies>
                                   <dependency>
                                           <groupId>com.amazonaws</groupId>
                                           <artifactId>aws-java-sdk-bom</artifactId>
                                           <version>1.11.814</version>
                                            <type>pom</type>
                                            <scope>import</scope>
                                   </dependency>
                           </dependencies>
       </dependencyManagement>
       <dependencies>
                     <!--

https://mvnrepository.com/artifact/software.amazon.awssdk/s3 -->
                     <dependency>
                              <groupId>com.amazonaws</groupId>
                               <artifactId>aws-java-sdk-s3</artifactId>
                    </dependency>
</dependencies>
<properties>
                        <maven.compiler.source>1.8</maven.compiler.source>
                        <maven.compiler.target>1.8</maven.compiler.target>
      </properties>

 

*Puedes revisar la última versión del aws-java-sdk-bom aquí. También puedes descargar otros módulos además del S3, tales como:

* Se recomienda módulo a módulo ya que es más práctico descargar solo los módulos que se utilizarán en vez de todo el SDK.

Opcionalmente, si solo quieres importar todo el SDK de AWS para java, lo puedes hacer copiando el siguiente código:

<dependencies>
               <dependency>
                        <groupId>com.amazonaws</groupId>
                         <artifactId>aws-java-sdk</artifactId>
                        <version>1.11.327</version>
  </dependency>
</dependencies>

 

7. Una vez hecho esto, procedemos a actualizar nuestro proyecto para que através del POM.xml Maven descargue las dependencias. Hacemos click derecho en la carpeta principal del proyecto (En este caso S3Example), seleccionamos Maven, luego hacemos click en Update project.

8. Verifiquemos que la casilla Force Update se encuentre seleccionada y luego hacemos click en OK

Ejemplo práctico utilizando S3

A continuación realizaremos un corto y práctico ejemplo utilizando el SDK de AWS con el servicio S3. Primero, debemos crear una clase:

1. Haz click derecho sobre la carpeta src, y luego selecciona new y luego hacemos click en Class.

2. Asignamos un nombre a la clase y hacemos click en Finish.

3. Finalmente, copiamos y pegamos el siguiente código en la clase que acabamos de crear:

import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import java.io.File;
import java.util.List;

public class S3Example {

    private static final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1)
            .withCredentials(new ProfileCredentialsProvider("dev"))
            .build();

    public static void main(String[] args) {

        //Metodo a correr

    }

    public static void createBucket(String bucketName) {

        try {
            s3.createBucket(bucketName);

        } catch (AmazonS3Exception e) {
            System.err.println(e.getErrorMessage());
        }

    }

    public static void listBuckets() {

        List<Bucket> buckets = s3.listBuckets();
        System.out.println("Tus buckets son:");
        for (Bucket b : buckets) {

            System.out.println("* " + b.getName());
        }

    }

    public static void deleteBucket(String bucketName) {

        try {
            System.out.println(" OK, bucket ready to delete!");
            s3.deleteBucket(bucketName);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }
    }

    public static void uploadFile(String bucketName) {

        try {
            s3.putObject(bucketName, "hello.txt", new File("./hello.txt"));
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }

    }

    public static void listAllFiles(String bucketName) {

        ObjectListing ol = s3.listObjects(bucketName);
        List<S3ObjectSummary> objects = ol.getObjectSummaries();
        for (S3ObjectSummary os : objects) {
            System.out.println("* " + os.getKey());
        }
    }

    public static void deleteFile(String bucketName, String file) {

        try {
            s3.deleteObject(bucketName, file);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }

    }

}

 

Para más ejemplos con otros servicios puedes visitar: https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/prog-services.html