Hochladen eines Archivs in einer einzigen Operation mit AWS SDK for Java - Amazon S3 Glacier

Wenn Sie mit dem Archivierungsspeicher in Amazon Simple Storage Service (Amazon S3) noch nicht vertraut sind, empfehlen wir Ihnen, sich zunächst über die S3-Glacier-Speicherklassen in Amazon S3 (S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval und S3 Glacier Deep Archive) zu informieren. Weitere Informationen finden Sie unter S3-Glacier-Speicherklassen und Speicherklassen für die Archivierung von Objekten im Amazon S3-Benutzerhandbuch.

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.

Hochladen eines Archivs in einer einzigen Operation mit AWS SDK for Java

Sowohl die High-Level- als auch die Low-Level-API, die vom Amazon-SDK für Java bereitgestellt werden, bieten eine Methode zum Hochladen eines Archivs.

Hochladen eines Archivs mithilfe der High-Level-API von AWS SDK for Java

Die ArchiveTransferManager-Klasse der High-Level-API bietet die upload-Methode, mit der Sie ein Archiv in einen Tresor hochladen können.

Anmerkung

Sie können die upload-Methode zum Hochladen von kleinen und großen Archiven verwenden. Die Größe des hochzuladenden Archivs entscheidet bei dieser Methode darüber, ob das Archiv in einem einzigen Vorgang hochgeladen wird oder ob die API für mehrteilige Uploads verwendet wird, um das Archiv in mehreren Teilen hochzuladen.

Beispiel: Hochladen eines Archivs mit der High-Level-API von AWS SDK for Java

Mit dem folgenden Java-Beispielcode wird ein Archiv in einen Tresor (examplevault) in der Region „USA West (Oregon)“ (us-west-2) hochgeladen. Eine Liste der unterstützten AWS-Regionen und Endpunkte finden Sie unter Zugreifen auf Amazon S3 Glacier.

Eine schrittweise Anleitung für das Ausführen dieses Beispiels finden Sie unter Ausführen von Java-Beispielen für Amazon S3 Glacier unter Verwendung von Eclipse. Sie müssen den Code wie gezeigt aktualisieren und dabei den Namen des Tresors, in den Sie das Archiv hochladen möchten, und den Namen der hochzuladenden Datei angeben.

import java.io.File; import java.io.IOException; import java.util.Date; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.glacier.AmazonGlacierClient; import com.amazonaws.services.glacier.transfer.ArchiveTransferManager; import com.amazonaws.services.glacier.transfer.UploadResult; public class ArchiveUploadHighLevel { public static String vaultName = "*** provide vault name ***"; public static String archiveToUpload = "*** provide name of file to upload ***"; public static AmazonGlacierClient client; public static void main(String[] args) throws IOException { ProfileCredentialsProvider credentials = new ProfileCredentialsProvider(); client = new AmazonGlacierClient(credentials); client.setEndpoint("https://glacier.us-west-2.amazonaws.com/"); try { ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials); UploadResult result = atm.upload(vaultName, "my archive " + (new Date()), new File(archiveToUpload)); System.out.println("Archive ID: " + result.getArchiveId()); } catch (Exception e) { System.err.println(e); } } }

Hochladen eines Archivs in einer einzigen Operation mit der Low-Level-API von AWS SDK for Java

Die Low-Level-API bietet Methoden für alle Archivvorgänge. Im Folgenden werden die Schritte zum Hochladen eines Archivs mit AWS SDK for Java beschrieben.

  1. Erstellen einer Instance der AmazonGlacierClient-Klasse (Client).

    Sie müssen die AWS-Region angeben, in der das Archiv hochgeladen werden soll. Alle Operationen, die Sie mit diesem Client ausführen, gelten für diese AWS-Region.

  2. Um die Anforderungsinformationen bereitzustellen, erstellen Sie eine Instance der UploadArchiveRequest-Klasse.

    Zusätzlich zu den hochzuladenden Daten müssen Sie eine Prüfsumme (SHA-256-Struktur-Hash) für die Nutzlast, den Tresornamen, die Inhaltslänge der Daten und Ihre Konto-ID angeben.

    Wenn Sie keine Konto-ID angeben, wird die Konto-ID übernommen, die den Anmeldeinformationen zugeordnet ist, die Sie zum Signieren der Anforderung verwenden. Weitere Informationen finden Sie unter Verwenden von AWS SDK for Java mit Amazon S3 Glacier.

  3. Führen Sie die uploadArchive-Methode aus, indem das Anforderungsobjekt als Parameter festgelegt wird.

    In der Antwort gibt Amazon S3 Glacier (S3 Glacier) eine Archiv-ID für das neu hochgeladenen Archiv zurück.

Der folgende Java-Codeausschnitt veranschaulicht die vorherigen Schritte.

AmazonGlacierClient client; UploadArchiveRequest request = new UploadArchiveRequest() .withVaultName("*** provide vault name ***") .withChecksum(checksum) .withBody(new ByteArrayInputStream(body)) .withContentLength((long)body.length); UploadArchiveResult uploadArchiveResult = client.uploadArchive(request); System.out.println("Location (includes ArchiveID): " + uploadArchiveResult.getLocation());

Beispiel: Hochladen eines Archivs in einer einzigen Operation mit der Low-Level-API von AWS SDK for Java

Im folgenden Java-Codebeispiel wird AWS SDK for Java zum Hochladen eines Archivs in den Tresor verwendet (examplevault). Eine schrittweise Anleitung für das Ausführen dieses Beispiels finden Sie unter Ausführen von Java-Beispielen für Amazon S3 Glacier unter Verwendung von Eclipse. Sie müssen den Code wie gezeigt aktualisieren und dabei den Namen des Tresors, in den Sie das Archiv hochladen möchten, und den Namen der hochzuladenden Datei angeben.

import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.glacier.AmazonGlacierClient; import com.amazonaws.services.glacier.TreeHashGenerator; import com.amazonaws.services.glacier.model.UploadArchiveRequest; import com.amazonaws.services.glacier.model.UploadArchiveResult; public class ArchiveUploadLowLevel { public static String vaultName = "*** provide vault name ****"; public static String archiveFilePath = "*** provide to file upload ****"; public static AmazonGlacierClient client; public static void main(String[] args) throws IOException { ProfileCredentialsProvider credentials = new ProfileCredentialsProvider(); client = new AmazonGlacierClient(credentials); client.setEndpoint("https://glacier.us-east-1.amazonaws.com/"); try { // First open file and read. File file = new File(archiveFilePath); InputStream is = new FileInputStream(file); byte[] body = new byte[(int) file.length()]; is.read(body); // Send request. UploadArchiveRequest request = new UploadArchiveRequest() .withVaultName(vaultName) .withChecksum(TreeHashGenerator.calculateTreeHash(new File(archiveFilePath))) .withBody(new ByteArrayInputStream(body)) .withContentLength((long)body.length); UploadArchiveResult uploadArchiveResult = client.uploadArchive(request); System.out.println("ArchiveID: " + uploadArchiveResult.getArchiveId()); } catch (Exception e) { System.err.println("Archive not uploaded."); System.err.println(e); } } }