Travailler avec S3 et les stockages cloud en Java : la bibliothèque AWS SDK

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec S3 et les stockages cloud en Java à l'aide d'AWS SDK



Les stockages objets cloud via le protocole S3 (Amazon Simple Storage Service) sont devenus la norme de facto pour le stockage de données non structurées. En Java, pour travailler avec des stockages compatibles S3 (Amazon S3, MinIO, Yandex Object Storage, DigitalOcean Spaces, etc.), on utilise la bibliothèque officielle AWS SDK for Java. Dans cet article, nous aborderons la connexion, l'initialisation du client et les opérations de base avec les fichiers.



Connexion d'AWS SDK



Pour travailler avec S3, ajoutez la dépendance dans pom.xml (Maven) :



<dependency>    <groupId>software.amazon.awssdk</groupId>    <artifactId>s3</artifactId>    <version>2.27.0</version></dependency>


Pour Gradle :



implementation 'software.amazon.awssdk:s3:2.27.0'


Création d'un client S3



Le client se configure via un builder. Pour Amazon S3, il suffit de spécifier la région :



S3Client s3 = S3Client.builder()    .region(Region.EU_CENTRAL_1)    .build();


Pour les stockages compatibles (MinIO, Yandex Object Storage), il faut spécifier l'endpoint et les credentials :



String endpoint = "https://storage.yandexcloud.net";String accessKey = "YOUR_ACCESS_KEY";String secretKey = "YOUR_SECRET_KEY";

S3Client s3 = S3Client.builder() .endpointOverride(URI.create(endpoint)) .region(Region.US_EAST_1) // la région peut être quelconque .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create(accessKey, secretKey))) .build();


Opérations de base avec les buckets



  • Création d'un bucket
  • Vérification de l'existence
  • Suppression d'un bucket


Exemple de création d'un bucket :



String bucketName = "my-java-bucket";try {    s3.createBucket(CreateBucketRequest.builder()        .bucket(bucketName)        .build());    System.out.println("Bucket créé : " + bucketName);} catch (S3Exception e) {    System.err.println("Erreur : " + e.awsErrorDetails().errorMessage());}


Téléchargement de fichiers (Upload)



On peut télécharger un fichier depuis un flux, une chaîne ou un fichier local :



// Téléchargement depuis un fichier locals3.putObject(PutObjectRequest.builder()        .bucket(bucketName)        .key("docs/report.pdf")        .build(),    RequestBody.fromFile(Paths.get("/home/user/report.pdf")));

// Téléchargement d'une chaîne comme fichier textes3.putObject(PutObjectRequest.builder() .bucket(bucketName) .key("hello.txt") .contentType("text/plain") .build(), RequestBody.fromString("Bonjour, S3 !"));


Téléchargement de fichiers (Download)



Pour obtenir un objet, utilisez getObject :



// Téléchargement vers un fichiers3.getObject(GetObjectRequest.builder()        .bucket(bucketName)        .key("docs/report.pdf")        .build(),    ResponseTransformer.toFile(Paths.get("downloaded_report.pdf")));

// Téléchargement vers une chaîneString content = s3.getObjectAsBytes(GetObjectRequest.builder() .bucket(bucketName) .key("hello.txt") .build()) .asUtf8String();System.out.println(content);


Suppression d'objets



s3.deleteObject(DeleteObjectRequest.builder()    .bucket(bucketName)    .key("hello.txt")    .build());System.out.println("Fichier supprimé");


Liste des objets dans un bucket



Pour obtenir la liste de tous les fichiers (avec pagination) :



ListObjectsV2Request listReq = ListObjectsV2Request.builder()    .bucket(bucketName)    .maxKeys(100)    .build();

ListObjectsV2Response listRes = s3.listObjectsV2(listReq);for (S3Object obj : listRes.contents()) { System.out.println(" - "

Recommendations