Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-support
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Operationen an Amazon S3 Objekten ausführen
Ein Amazon S3-Objekt stellt eine Datei oder eine Sammlung von Daten dar. Jedes Objekt muss in einem Bucket enthalten sein.
Anmerkung
Bei diesen Codebeispielen wird vorausgesetzt, dass Sie das Material unter Verwenden der verstehen AWS SDK for Java und die AWS Standardanmeldeinformationen anhand der Informationen unter AWSAnmeldeinformationen einrichten und Region für Entwicklung konfiguriert haben.
Themen
Hochladen eines Objekts
Verwenden Sie die putObject
Methode des AmazonS3-Clients und geben Sie einen Bucket-Namen, einen Schlüsselnamen und eine Datei zum Hochladen an. Der Bucket muss vorhanden sein, andernfalls tritt ein Fehler auf.
Importe
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); }
Das vollständige Beispiel
Auflisten von Objekten
Um eine Liste von Objekten in einem Bucket abzurufen, verwenden Sie die listObjects
Methode des AmazonS3-Clients und geben Sie den Namen eines Buckets an.
Die listObjects
Methode gibt ein ObjectListingObjekt zurück, das Informationen über die Objekte im Bucket bereitstellt. Um die Objektnamen (Schlüssel) aufzulisten, verwenden Sie die getObjectSummaries
Methode, um eine Liste von ObjectSummaryS3-Objekten abzurufen, von denen jedes ein einzelnes Objekt im Bucket darstellt. Rufen Sie dann dessen getKey
-Methode zum Abrufen des Objektnamens auf.
Importe
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()); }
Das vollständige Beispiel
Herunterladen eines Objekts
Verwenden Sie die getObject
Methode des AmazonS3-Clients und übergeben Sie ihr den Namen eines Buckets und eines Objekts zum Herunterladen. Bei Erfolg gibt die Methode ein S3Object zurück. Der angegebene Bucket und der Objektschlüssel müssen vorhanden sein, andernfalls tritt ein Fehler auf.
Sie können den Inhalt des Objekts anfordern, indem Sie getObjectContent
für das Objekt S3Object
aufrufen. Dies gibt ein S3 zurückObjectInputStream, das sich wie ein InputStream
Standard-Java-Objekt verhält.
Das folgende Beispiel lädt ein Objekt von S3 herunter und speichert die Inhalte in einer Datei mit dem Namen des Objektschlüssels.
Importe
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); }
Das vollständige Beispiel
Kopieren, Verschieben oder Umbenennen von Objekten
Sie können ein Objekt von einem Bucket in einen anderen kopieren, indem Sie die -Methode des AmazonS3-Clients verwenden. copyObject
Sie nimmt den Namen des Buckets, aus dem kopiert werden soll, das zu kopierende Objekt sowie den Namen des Zielbuckets entgegen.
Importe
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!");
Das vollständige Beispiel
Anmerkung
Sie können copyObject
mit deleteObject verwenden, um ein Objekt zu verschieben oder umzubenennen. Kopieren Sie das Objekt dazu als Erstes auf einen neuen Namen (Sie können den gleichen Bucket als Quelle und Ziel angeben) und löschen Sie das Objekt dann von seinem bisherigen Speicherort.
Objekte löschen
Verwenden Sie die deleteObject
Methode des AmazonS3-Clients und übergeben Sie ihr den Namen eines Buckets und eines Objekts, das gelöscht werden soll. Der angegebene Bucket und der Objektschlüssel müssen vorhanden sein, andernfalls tritt ein Fehler auf.
Importe
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); }
Das vollständige Beispiel
Löschen mehrerer Objekte auf einmal
Mit der deleteObjects
Methode des AmazonS3-Clients können Sie mehrere Objekte aus demselben Bucket löschen, indem Sie ihre Namen an die Methode link: sdk-for-java DeleteObjectsRequest /v1/reference/com/amazonaws/services/s3/model/ .html übergeben.
Importe
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); }
Das vollständige Beispiel