Cette page est réservée aux clients existants du service Amazon Glacier utilisant Vaults et l'API REST d'origine datant de 2012.
Si vous recherchez des solutions de stockage d'archives, nous vous recommandons d'utiliser les classes de stockage Amazon 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 classes de stockage Amazon Glacier
Amazon Glacier (service autonome d'origine basé sur un coffre-fort) n'acceptera plus de nouveaux clients à compter du 15 décembre 2025, sans aucune incidence sur les clients existants. Amazon Glacier est un service autonome doté de son propre service APIs qui stocke les données dans des coffres-forts et qui se distingue des classes de stockage Amazon S3 et Amazon S3 Glacier. Vos données existantes resteront sécurisées et accessibles indéfiniment dans Amazon Glacier. Aucune migration n'est requise. Pour un stockage d'archivage à long terme et à faible coût AWS , nous recommandons les classes de stockage Amazon S3 Glacier
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.
Téléchargement d'archives volumineuses à l'aide du AWS SDK pour .NET
Les niveaux de haut et de bas niveau APIs fournis par le SDK Amazon pour .NET fournissent une méthode pour télécharger des archives volumineuses en plusieurs parties (Téléchargement d'une archive dans Amazon Glaciervoir).
-
L'API de haut niveau fournit une méthode que vous pouvez utiliser pour charger des archives de n'importe quelle taille. Selon le fichier que vous chargez, la méthode télécharge l'archive en une seule opération ou utilise le support de téléchargement en plusieurs parties d'Amazon Glacier (Amazon Glacier) pour télécharger l'archive en plusieurs parties.
-
L'API de bas niveau est mappée étroitement à l'implémentation REST sous-jacente. Par conséquent, elle fournit une méthode pour charger des archives plus petites en une seule opération et un groupe de méthodes qui prennent en charge le chargement partitionné en plusieurs parties pour les archives plus volumineuses. Cette section explique le chargement des archives volumineuses en plusieurs parties à l'aide de l'API de bas niveau.
Pour plus d'informations sur le haut niveau et le bas niveau APIs, consultezUtilisation du AWS SDK pour .NET avec Amazon Glacier.
Rubriques
Téléchargement partiel d'archives volumineuses à l'aide de l'API de haut niveau du AWS SDK pour .NET
Vous utilisez les mêmes méthodes de l'API de haut niveau pour charger les archives petites ou volumineuses. En fonction de la taille de l'archive, les méthodes d'API de haut niveau décident de charger l'archive en une seule opération ou d'utiliser l'API de téléchargement en plusieurs parties fournie par Amazon Glacier. Pour de plus amples informations, veuillez consulter Téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour .NET.
Téléchargement partiel d'archives volumineuses à l'aide de l'API de bas niveau du AWS SDK pour .NET
Pour bénéficier d'un contrôle précis du chargement, vous pouvez utiliser l'API de bas niveau afin de configurer la demande et traiter la réponse. Voici les étapes pour charger des archives volumineuses en plusieurs parties à l'aide du kit AWS SDK pour .NET.
-
Créez une instance de la classe
AmazonGlacierClient(le client).Vous devez spécifier AWS la région dans laquelle vous souhaitez enregistrer l'archive. Toutes les opérations que vous effectuez à l'aide de ce client s'appliquent à cette AWS région.
-
Lancez un téléchargement partitionné en appelant la méthode
InitiateMultipartUpload.Vous devez fournir le nom du coffre dans lequel vous souhaitez charger l'archive, spécifier la taille des parties de l'archive à charger et indiquer éventuellement une description. Vous fournissez ces informations en créant une instance de la classe
InitiateMultipartUploadRequest. En réponse, Amazon Glacier renvoie un ID de chargement. -
Chargez les parties en appelant la méthode
UploadMultipartPart.Pour chaque partie que vous chargez, vous devez fournir le nom du coffre, la plage d'octets dans l'archive assemblée finale qui sera chargée dans cette partie, le total de contrôle des données de la partie et l'ID du chargement.
-
Terminez le chargement partitionné en appelant la méthode
CompleteMultipartUpload.Vous devez fournir l'ID de chargement, le total de contrôle de l'archive entière, la taille de l'archive (taille combinée de toutes les parties que avez chargées) et le nom du coffre. Amazon Glacier construit l'archive à partir des parties chargées et renvoie un ID d'archive.
Exemple : Chargement d'une archive volumineuse en plusieurs parties à l'aide du kit SDK Amazon pour .NET
L'exemple de code C# suivant utilise le AWS SDK pour .NET pour télécharger une archive dans un coffre (examplevault). Pour step-by-step obtenir des instructions sur la façon d'exécuter cet exemple, consultezExemples de code en cours d'exécution. Vous devez mettre à jour le code tel qu'il est présenté avec le nom d'un fichier que vous souhaitez charger.
using System; using System.Collections.Generic; using System.IO; using Amazon.Glacier; using Amazon.Glacier.Model; using Amazon.Runtime; namespace glacier.amazon.com.docsamples { class ArchiveUploadMPU { static string vaultName = "examplevault"; static string archiveToUpload = "*** Provide file name (with full path) to upload ***"; static long partSize = 4194304; // 4 MB. public static void Main(string[] args) { AmazonGlacierClient client; List<string> partChecksumList = new List<string>(); try { using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2)) { Console.WriteLine("Uploading an archive."); string uploadId = InitiateMultipartUpload(client); partChecksumList = UploadParts(uploadId, client); string archiveId = CompleteMPU(uploadId, client, partChecksumList); Console.WriteLine("Archive ID: {0}", archiveId); } Console.WriteLine("Operations successful. To continue, press Enter"); Console.ReadKey(); } catch (AmazonGlacierException e) { Console.WriteLine(e.Message); } catch (AmazonServiceException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("To continue, press Enter"); Console.ReadKey(); } static string InitiateMultipartUpload(AmazonGlacierClient client) { InitiateMultipartUploadRequest initiateMPUrequest = new InitiateMultipartUploadRequest() { VaultName = vaultName, PartSize = partSize, ArchiveDescription = "Test doc uploaded using MPU." }; InitiateMultipartUploadResponse initiateMPUresponse = client.InitiateMultipartUpload(initiateMPUrequest); return initiateMPUresponse.UploadId; } static List<string> UploadParts(string uploadID, AmazonGlacierClient client) { List<string> partChecksumList = new List<string>(); long currentPosition = 0; var buffer = new byte[Convert.ToInt32(partSize)]; long fileLength = new FileInfo(archiveToUpload).Length; using (FileStream fileToUpload = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read)) { while (fileToUpload.Position < fileLength) { Stream uploadPartStream = GlacierUtils.CreatePartStream(fileToUpload, partSize); string checksum = TreeHashGenerator.CalculateTreeHash(uploadPartStream); partChecksumList.Add(checksum); // Upload part. UploadMultipartPartRequest uploadMPUrequest = new UploadMultipartPartRequest() { VaultName = vaultName, Body = uploadPartStream, Checksum = checksum, UploadId = uploadID }; uploadMPUrequest.SetRange(currentPosition, currentPosition + uploadPartStream.Length - 1); client.UploadMultipartPart(uploadMPUrequest); currentPosition = currentPosition + uploadPartStream.Length; } } return partChecksumList; } static string CompleteMPU(string uploadID, AmazonGlacierClient client, List<string> partChecksumList) { long fileLength = new FileInfo(archiveToUpload).Length; CompleteMultipartUploadRequest completeMPUrequest = new CompleteMultipartUploadRequest() { UploadId = uploadID, ArchiveSize = fileLength.ToString(), Checksum = TreeHashGenerator.CalculateTreeHash(partChecksumList), VaultName = vaultName }; CompleteMultipartUploadResponse completeMPUresponse = client.CompleteMultipartUpload(completeMPUrequest); return completeMPUresponse.ArchiveId; } } }