Chargement d'une archive en une seule opération à l'aide du kit AWS SDK for Java - Amazon S3 Glacier

Cette page est réservée aux clients existants du service S3 Glacier utilisant Vaults et l'original REST API de 2012.

Si vous recherchez des solutions de stockage d'archives, nous vous conseillons d'utiliser les classes de stockage S3 Glacier dans Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval et S3 Glacier Deep Archive. Pour en savoir plus sur ces options de stockage, consultez les sections Classes de stockage S3 Glacier et Stockage de données à long terme à l'aide des classes de stockage S3 Glacier dans le guide de l'utilisateur Amazon S3. Ces classes de stockage utilisent Amazon S3API, sont disponibles dans toutes les régions et peuvent être gérées au sein de la console Amazon S3. Ils offrent des fonctionnalités telles que l'analyse des coûts de stockage, Storage Lens, des fonctionnalités de chiffrement optionnelles avancées, etc.

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.

Chargement d'une archive en une seule opération à l'aide du kit AWS SDK for Java

Les API de haut et bas niveau fournies par le kit SDK Amazon pour Java proposent une méthode de chargement d'archive.

Chargement d'une archive à l'aide de l'API de haut niveau du kit AWS SDK for Java

La classe ArchiveTransferManager de l'API de haut niveau fournit la méthode upload, qui permet de charger une archive dans un coffre.

Note

Vous pouvez utiliser la méthode upload pour charger des archives petites ou volumineuses. Selon la taille de l'archive que vous chargez, cette méthode détermine si vous devez charger l'archive en une seule opération ou si vous devez utiliser l'API de chargement partitionné pour charger l'archive en plusieurs parties.

Exemple : Chargement d'une archive à l'aide de l'API de haut niveau du kit AWS SDK for Java

L'exemple de code Java suivant charge une archive sur un coffre (examplevault) dans la région USA Ouest (Oregon) (us-west-2). Pour obtenir la liste des régions AWS et des points de terminaison pris en charge, consultez Accès à Amazon S3 Glacier.

Pour obtenir les instructions étape par étape permettant d'exécuter cet exemple, consultez la section Exécution d'exemples Java pour Amazon S3 Glacier en utilisant Eclipse. Vous devez mettre à jour le code tel qu'il est présenté avec le nom du coffre sur lequel vous souhaitez effectuer le chargement et le nom du fichier à charger.

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); } } }

Chargement d'une archive en une seule opération à l'aide de l'API de bas niveau du kit AWS SDK for Java

L'API de bas niveau fournit des méthodes pour toutes les opérations d'archivage. Voici les étapes de chargement d'une archive à l'aide du kit AWS SDK for Java.

  1. Créez une instance de la classe AmazonGlacierClient (le client).

    Vous devez spécifier la région AWS où vous souhaitez charger l'archive. Toutes les opérations que vous effectuez à l'aide de ce client s'appliquent à cette région AWS.

  2. Fournissez les informations de demande en créant une instance de la classe UploadArchiveRequest.

    Outre les données que vous souhaitez télécharger, vous devez fournir un total de contrôle (hachage d'arborescence SHA-256) de la charge utile, le nom du coffre, la longueur du contenu des données et votre ID de compte.

    Si vous n'indiquez pas d'ID de compte, l'ID de compte associé aux informations d'identification que vous avez indiquées pour signer la demande est pris en compte. Pour de plus amples informations, veuillez consulter Utilisation d'AWS SDK for Java avec Amazon S3 Glacier.

  3. Exécutez la méthode uploadArchive en fournissant l'objet de demande comme paramètre.

    En réponse, Amazon S3 Glacier (S3 Glacier) renvoie l'ID de l'archive qui vient d'être chargée.

L'extrait de code Java suivant illustre les étapes précédentes.

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());

Exemple : Chargement d'une archive en une seule opération à l'aide de l'API de bas niveau du kit AWS SDK for Java

L'exemple de code Java suivant utilise le kit AWS SDK for Java pour charger une archive dans un coffre (examplevault). Pour obtenir les instructions étape par étape permettant d'exécuter cet exemple, consultez la section Exécution d'exemples Java pour Amazon S3 Glacier en utilisant Eclipse. Vous devez mettre à jour le code tel qu'il est présenté avec le nom du coffre sur lequel vous souhaitez effectuer le chargement et le nom du fichier à charger.

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); } } }