Exécution d'opérations sur Amazon S3 des objets - AWS SDK for Java 1. x

La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-supportle 31 décembre 2025. Nous vous recommandons de migrer vers le pour continuer AWS SDK for Java 2.xà bénéficier des nouvelles fonctionnalités, des améliorations de disponibilité et des mises à jour de sécurité.

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.

Exécution d'opérations sur Amazon S3 des objets

Un objet Amazon S3 représente un fichier ou un ensemble de données. Chaque objet doit résider dans un compartiment.

Note

Ces exemples de code supposent que vous comprenez le contenu de la section Utilisation du AWS SDK for Java et que vous avez configuré les AWS informations d'identification par défaut à l'aide des informations fournies dans Configurer les informations AWS d'identification et la région pour le développement.

Chargement d'un objet

Utilisez la putObject méthode du client AmazonS3, en fournissant un nom de compartiment, un nom de clé et un fichier à charger. Le compartiment doit exister, sans quoi une erreur est générée.

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Code

System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.putObject(bucket_name, key_name, new File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Voir l'exemple complet surGitHub.

Affichage de la liste des objets

Pour obtenir la liste des objets contenus dans un bucket, utilisez la listObjects méthode du client AmazonS3 en fournissant le nom du bucket.

La listObjects méthode renvoie un ObjectListingobjet qui fournit des informations sur les objets du bucket. Pour répertorier les noms d'objets (clés), utilisez la getObjectSummaries méthode pour obtenir une liste d'ObjectSummaryobjets S3, dont chacun représente un seul objet dans le bucket. Ensuite, appelez sa méthode getKey pour récupérer le nom de l'objet.

Importations

import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.S3ObjectSummary;

Code

System.out.format("Objects in S3 bucket %s:\n", bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListObjectsV2Result result = s3.listObjectsV2(bucket_name); List<S3ObjectSummary> objects = result.getObjectSummaries(); for (S3ObjectSummary os : objects) { System.out.println("* " + os.getKey()); }

Voir l'exemple complet surGitHub.

Téléchargement d'un objet

Utilisez la getObject méthode du client AmazonS3 en lui transmettant le nom du bucket et de l'objet à télécharger. En cas de réussite, la méthode renvoie un objet S3Object. Le compartiment et la clé d'objet spécifiés doivent exister, sans quoi une erreur est générée.

Vous pouvez obtenir le contenu de l'objet en appelant getObjectContent sur l'objet S3Object. Cela renvoie un S3 ObjectInputStream qui se comporte comme un InputStream objet Java standard.

L'exemple suivant télécharge un objet à partir de S3 et enregistre son contenu dans un fichier (en utilisant le même nom que la clé de l'objet).

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import java.io.File;

Code

System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { S3Object o = s3.getObject(bucket_name, key_name); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key_name)); byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } s3is.close(); fos.close(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); }

Voir l'exemple complet surGitHub.

Copie et déplacement d'objets, ou attribution d'un nouveau nom aux objets

Il se peut que vous souhaitiez copier un compartiment à un autre grâce à la méthode du copyObject client AmazonS3. Elle récupère le nom du compartiment d'où l'objet est copié, l'objet à copier et le nom du compartiment de destination.

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;

Code

try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!");

Voir l'exemple complet surGitHub.

Note

Vous pouvez utiliser copyObject avec deleteObject pour déplacer ou renommer un objet, en copiant d'abord l'objet avec un nouveau nom (vous pouvez utiliser le même compartiment comme source et comme destination), puis en supprimant l'objet de son ancien emplacement.

Supprimer un objet

Utilisez la deleteObject méthode du client AmazonS3 en lui transmettant le nom du bucket et de l'objet à supprimer. Le compartiment et la clé d'objet spécifiés doivent exister, sans quoi une erreur est générée.

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;

Code

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Voir l'exemple complet surGitHub.

Suppression simultanée de plusieurs objets

À l'aide de la deleteObjects méthode du client AmazonS3, vous pouvez supprimer plusieurs objets du même bucket en transmettant leurs noms à la méthode link : sdk-for-java DeleteObjectsRequest /v1/reference/com/amazonaws/services/s3/model/ .html.

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Code

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name) .withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Voir l'exemple complet surGitHub.