La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
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.
Rubriques
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
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
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
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
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
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