

 **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](https://aws.amazon.com/s3/storage-classes/glacier/).

Amazon Glacier (service autonome d'origine basé sur un coffre-fort) n'accepte plus de nouveaux clients. 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](https://aws.amazon.com/s3/storage-classes/glacier/), qui offrent une expérience client supérieure avec des compartiments S3, une Région AWS disponibilité totale APIs, des coûts réduits et AWS une intégration des services. Si vous souhaitez des fonctionnalités améliorées, envisagez de migrer vers les classes de stockage Amazon S3 Glacier en suivant nos [conseils relatifs aux AWS solutions pour le transfert de données depuis les coffres-forts Amazon Glacier vers les classes de stockage Amazon S3 Glacier](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/).

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'une archive dans Amazon Glacier
<a name="uploading-an-archive"></a>

Amazon Glacier (Amazon Glacier) fournit une console de gestion que vous pouvez utiliser pour créer et supprimer des coffres-forts. Toutefois, vous ne pouvez pas télécharger d'archives sur Amazon Glacier à l'aide de la console de gestion. Pour télécharger des données, telles que des photos, des vidéos et d'autres documents, vous devez utiliser le code AWS CLI ou écrire du code pour effectuer des demandes, en utilisant directement l'API REST ou en utilisant Amazon SDKs. 

Pour plus d'informations sur l'utilisation d'Amazon Glacier avec le AWS CLI, consultez la [AWS CLI section Référence d'Amazon Glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html). Pour installer le AWS CLI, rendez-vous sur [AWS Command Line Interface](https://aws.amazon.com/cli/). Les rubriques suivantes **relatives au chargement** décrivent comment charger des archives sur Amazon Glacier à l'aide du SDK Amazon pour Java, du SDK Amazon pour .NET et de l'API REST.

**Topics**
+ [Options de téléchargement d'une archive sur Amazon Glacier](#uploading-an-archive-overview)
+ [Chargement d'une archive en une seule opération](uploading-archive-single-operation.md)
+ [Chargement d'archives volumineuses en plusieurs parties (chargement partitionné)](uploading-archive-mpu.md)

## Options de téléchargement d'une archive sur Amazon Glacier
<a name="uploading-an-archive-overview"></a>

En fonction de la taille des données que vous chargez, Amazon Glacier propose les options suivantes : 
+ **Charger des archives en une seule opération** : vous pouvez charger des archives de 1 octet à 4 Go en une seule opération. Toutefois, nous encourageons les clients d'Amazon Glacier à utiliser le téléchargement partitionné pour charger des archives de plus de 100 Mo. Pour de plus amples informations, veuillez consulter [Chargement d'une archive en une seule opération](uploading-archive-single-operation.md).
+ **Charger des archives en plusieurs parties** : l'API de chargement partitionné vous permet de charger des archives volumineuses, d'une taille maximale d'environ 40 000 Go (10 000 \$1 4 Go). 

  L'appel d'API de chargement partitionné est conçu pour améliorer l'expérience de chargement pour les archives plus volumineuses. Vous pouvez charger des archives en plusieurs parties. Ces parties peuvent être chargées indépendamment, dans n'importe quel ordre, et en parallèle. En cas d'échec du chargement d'une partie, vous ne devez recharger que cette partie, et non la totalité de l'archive. Vous pouvez utiliser le chargement partitionné pour les archives dont la taille est comprise entre 1 octet et environ 40 000 Go. Pour de plus amples informations, veuillez consulter [Chargement d'archives volumineuses en plusieurs parties (chargement partitionné)](uploading-archive-mpu.md).

**Important**  
L'inventaire du coffre Amazon Glacier n'est mis à jour qu'une fois par jour. Lorsque vous chargez une archive, elle est ajoutée à votre coffre, mais elle n'est pas visible (dans la console ou dans votre liste d'inventaire de coffre téléchargé) tant que l'inventaire de coffre n'est pas mis à jour.

### Utilisation du AWS Snowball Edge service
<a name="using-import-export-service-for-glacier"></a>

AWS Snowball Edge accélère le transfert de grandes quantités de données vers et depuis des appareils appartenant à Amazon, AWS en contournant Internet. Pour plus d'informations, consultez la page de détails de [AWS Snowball Edge](https://aws.amazon.com/snowball). 

Pour télécharger des données existantes vers Amazon Glacier (Amazon Glacier), vous pouvez envisager d'utiliser l'un des types d' AWS Snowball Edge appareils pour importer des données dans Amazon S3, puis de les déplacer vers la classe de stockage Amazon Glacier à des fins d'archivage selon les règles du cycle de vie. Lorsque vous transférez des objets Amazon S3 vers la classe de stockage Amazon Glacier, Amazon S3 utilise Amazon Glacier en interne pour un stockage durable à moindre coût. Bien que les objets soient stockés dans Amazon Glacier, ils restent des objets Amazon S3 que vous gérez dans Amazon S3, et vous ne pouvez pas y accéder directement via Amazon Glacier.

Pour plus d'informations sur la configuration du cycle de vie d'Amazon S3 et la transition des objets vers la classe de stockage Amazon Glacier, consultez la section [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) and [Transitioning Objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) dans le guide de *l'utilisateur d'Amazon Simple Storage Service*.

# Chargement d'une archive en une seule opération
<a name="uploading-archive-single-operation"></a>

Comme il est décrit dans [Téléchargement d'une archive dans Amazon Glacier](uploading-an-archive.md), vous pouvez charger de petites archives en une seule opération. Toutefois, nous encourageons les clients d'Amazon Glacier (Amazon Glacier) à utiliser le téléchargement partitionné pour charger des archives de plus de 100 Mo. 

**Topics**
+ [Chargement d'une archive en une seule opération à l'aide du AWS Command Line Interface](uploading-an-archive-single-op-using-cli.md)
+ [Chargement d'une archive en une seule opération à l'aide du AWS SDK pour Java](uploading-an-archive-single-op-using-java.md)
+ [Téléchargement d'une archive en une seule opération à l'aide du AWS SDK pour .NET dans Amazon Glacier](uploading-an-archive-single-op-using-dotnet.md)
+ [Chargement d'une archive en une seule opération à l'aide de l'API REST](uploading-an-archive-single-op-using-rest.md)

# Chargement d'une archive en une seule opération à l'aide du AWS Command Line Interface
<a name="uploading-an-archive-single-op-using-cli"></a>

Vous pouvez charger une archive dans Amazon Glacier (Amazon Glacier) à l'aide du AWS Command Line Interface (AWS CLI).

**Topics**
+ [(Prérequis) Configuration du AWS CLI](#Creating-Vaults-CLI-Setup)
+ [Exemple : Chargez une archive à l'aide du AWS CLI](#Uploading-Archives-CLI-Implementation)

## (Prérequis) Configuration du AWS CLI
<a name="Creating-Vaults-CLI-Setup"></a>

1. Téléchargez et configurez l’interface AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes dans le *Guide de l’utilisateur de l’interface AWS Command Line Interface * : 

    [Installation du AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

   [Configuration du AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Vérifiez votre AWS CLI configuration en saisissant les commandes suivantes à l'invite de commande. Ces commandes ne fournissent pas directement d'informations d'identification, par conséquent ce sont les informations du profil par défaut qui sont utilisées.
   + Essayez d'utiliser la commande help.

     ```
     aws help
     ```
   + Pour obtenir la liste des coffres-forts Amazon Glacier sur le compte configuré, utilisez la `list-vaults` commande. *123456789012*Remplacez-le par votre Compte AWS identifiant.

     ```
     aws glacier list-vaults --account-id 123456789012
     ```
   + Pour voir les données de configuration actuelles pour le AWS CLI, utilisez la `aws configure list` commande.

     ```
     aws configure list
     ```

## Exemple : Chargez une archive à l'aide du AWS CLI
<a name="Uploading-Archives-CLI-Implementation"></a>

Pour charger une archive, vous devez avoir créé un coffre. Pour plus d'informations sur la création de coffres, consultez [Création d'un coffre-fort dans Amazon Glacier](creating-vaults.md).

1. Utilisez la commande `upload-archive` pour ajouter une archive à un coffre existant. Dans l'exemple ci-dessous, remplacez les valeurs des paramètres `vault name` et `account ID`. Pour le paramètre `body`, indiquez le chemin du fichier que vous souhaitez charger.

   ```
   aws glacier upload-archive --vault-name awsexamplevault --account-id 123456789012 --body archive.zip
   ```

1.  Sortie attendue :

   ```
   {
       "archiveId": "kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw",
       "checksum": "969fb39823836d81f0cc028195fcdbcbbe76cdde932d4646fa7de5f21e18aa67",
       "location": "/123456789012/vaults/awsexamplevault/archives/kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw"
   }
   ```

   Une fois terminée, la commande affiche l'ID de l'archive, la somme de contrôle et l'emplacement dans Amazon Glacier. Pour plus d'informations sur la commande upload-archive, consultez [upload-archive](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-archive.html) dans le *guide de référence des commandes AWS CLI *.

# Chargement d'une archive en une seule opération à l'aide du AWS SDK pour Java
<a name="uploading-an-archive-single-op-using-java"></a>

Les niveaux de [haut et de bas niveau APIs](using-aws-sdk.md) fournis par le SDK Amazon pour Java fournissent une méthode pour télécharger une archive.

**Topics**
+ [Téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour Java](#uploading-an-archive-single-op-high-level-using-java)
+ [Chargement d'une archive en une seule opération à l'aide de l'API de bas niveau du AWS SDK pour Java](#uploading-an-archive-single-op-low-level-using-java)

## Téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour Java
<a name="uploading-an-archive-single-op-high-level-using-java"></a>

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 : téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour Java
<a name="upload-archive-high-level-java-example"></a>

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 AWS régions et des points de terminaison pris en charge, consultez[Accès à Amazon Glacier](amazon-glacier-accessing.md). 

Pour step-by-step obtenir des instructions sur la façon d'exécuter cet exemple, consultez[Exécution d'exemples Java pour Amazon Glacier à l'aide d'Eclipse](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java). 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.

**Example**  

```
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 AWS SDK pour Java
<a name="uploading-an-archive-single-op-low-level-using-java"></a>

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 pour Java.

 

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

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

1. 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 du AWS SDK pour Java avec Amazon Glacier](using-aws-sdk-for-java.md). 

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

   En réponse, Amazon Glacier (Amazon Glacier) renvoie l'ID d'archive de l'archive récemment télé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 : téléchargement d'une archive en une seule opération à l'aide de l'API de bas niveau du AWS SDK pour Java
<a name="uploding-single-archive-using-java-example"></a>

L'exemple de code Java suivant utilise le AWS SDK pour Java 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, consultez[Exécution d'exemples Java pour Amazon Glacier à l'aide d'Eclipse](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java). 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);
        }
    }
}
```

# Téléchargement d'une archive en une seule opération à l'aide du AWS SDK pour .NET dans Amazon Glacier
<a name="uploading-an-archive-single-op-using-dotnet"></a>

Les niveaux de [haut et de bas niveau APIs](using-aws-sdk.md) fournis par le SDK Amazon pour .NET fournissent une méthode permettant de télécharger une archive en une seule opération.

**Topics**
+ [Téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour .NET](#uploading-an-archive-single-op-highlevel-using-dotnet)
+ [Chargement d'une archive en une seule opération à l'aide de l'API de bas niveau du AWS SDK pour .NET](#uploading-an-archive-single-op-lowlevel-using-dotnet)

## Téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour .NET
<a name="uploading-an-archive-single-op-highlevel-using-dotnet"></a>

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 fichiers petits ou volumineux. Selon la taille du fichier que vous chargez, cette méthode détermine si vous devez effectuer cette opération en une seule fois ou si vous devez utiliser l'API de chargement partitionné pour charger le fichier en plusieurs parties.

### Exemple : téléchargement d'une archive à l'aide de l'API de haut niveau du AWS SDK pour .NET
<a name="upload-archive-highlevel-any-size-dotnet"></a>

L'exemple de code C\$1 suivant charge une archive sur un coffre (`examplevault`) dans la région USA Ouest (Oregon). 

Pour step-by-step obtenir des instructions sur la façon d'exécuter cet exemple, reportez-vous à[Exemples de code en cours d'exécution](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet). Vous devez mettre à jour le code tel qu'il est présenté avec le nom du fichier que vous souhaitez charger.

**Example**  

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadHighLevel
  {
    static string vaultName = "examplevault"; 
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

    public static void Main(string[] args)
    {
       try
      {
         var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
         // Upload an archive.
         string archiveId = manager.Upload(vaultName, "upload archive test", archiveToUpload).ArchiveId;
         Console.WriteLine("Archive ID: (Copy and save this ID for use in other examples.) : {0}", archiveId);
         Console.WriteLine("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();
    }
  }
}
```

## Chargement d'une archive en une seule opération à l'aide de l'API de bas niveau du AWS SDK pour .NET
<a name="uploading-an-archive-single-op-lowlevel-using-dotnet"></a>

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 pour .NET.

 

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

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

1. 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 devrez fournir un total de contrôle (hachage d'arborescence SHA-256) de la charge utile, le nom du coffre 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 du AWS SDK pour .NET avec Amazon Glacier](using-aws-sdk-for-dot-net.md). 

1. Exécutez la méthode `UploadArchive` en fournissant l'objet de demande comme paramètre. 

   En réponse, Amazon Glacier renvoie l'ID d'archive de l'archive récemment téléchargée. 

### Exemple : téléchargement d'une archive en une seule opération à l'aide de l'API de bas niveau du AWS SDK pour .NET
<a name="upload-archive-single-op-lowlevel-dotnet"></a>

L'exemple de code C\$1 suivant présente les étapes précédentes. L'exemple utilise le AWS SDK pour .NET pour télécharger une archive dans un coffre (`examplevault`). 

**Note**  
Pour plus d'informations sur l'API REST sous-jacente pour charger une archive en une seule demande, consultez [Chargement d'archive (POST archive)](api-archive-post.md).

Pour step-by-step obtenir des instructions sur la façon d'exécuter cet exemple, reportez-vous à[Exemples de code en cours d'exécution](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet). Vous devez mettre à jour le code tel qu'il est présenté avec le nom du fichier que vous souhaitez charger.

**Example**  

```
using System;
using System.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadSingleOpLowLevel
  {
    static string vaultName       = "examplevault";
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

    public static void Main(string[] args)
    {
      AmazonGlacierClient client;
      try
      {
         using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2))
        {
          Console.WriteLine("Uploading an archive.");
          string archiveId = UploadAnArchive(client);
          Console.WriteLine("Archive ID: {0}", archiveId);
        }
      }
      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 UploadAnArchive(AmazonGlacierClient client)
    {
      using (FileStream fileStream = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read))
      {
        string treeHash = TreeHashGenerator.CalculateTreeHash(fileStream);
        UploadArchiveRequest request = new UploadArchiveRequest()
        {
          VaultName = vaultName,
          Body = fileStream,
          Checksum = treeHash
        };
        UploadArchiveResponse response = client.UploadArchive(request);
        string archiveID = response.ArchiveId;
        return archiveID;
      }
    }
  }
}
```

# Chargement d'une archive en une seule opération à l'aide de l'API REST
<a name="uploading-an-archive-single-op-using-rest"></a>

Vous pouvez utiliser l'appel de l'API de chargement d'archive pour charger une archive en une seule opération. Pour de plus amples informations, veuillez consulter [Chargement d'archive (POST archive)](api-archive-post.md).

# Chargement d'archives volumineuses en plusieurs parties (chargement partitionné)
<a name="uploading-archive-mpu"></a>

**Topics**
+ [Processus de chargement partitionné](#MPUprocess)
+ [En bref](#qfacts)
+ [Téléchargement d'archives volumineuses à l'aide du AWS CLI](uploading-an-archive-mpu-using-cli.md)
+ [Chargement d'archives volumineuses en plusieurs parties à l'aide du kit SDK Amazon pour Java](uploading-an-archive-mpu-using-java.md)
+ [Téléchargement d'archives volumineuses à l'aide du AWS SDK pour .NET](uploading-an-archive-mpu-using-dotnet.md)
+ [Chargement d'archives volumineuses en plusieurs parties à l'aide de l'API REST](uploading-an-archive-mpu-using-rest.md)

## Processus de chargement partitionné
<a name="MPUprocess"></a>

Comme décrit dans[Téléchargement d'une archive dans Amazon Glacier](uploading-an-archive.md), nous encourageons les clients d'Amazon Glacier (Amazon Glacier) à utiliser le téléchargement partitionné pour charger des archives de plus de 100 mégaoctets (MiB). 

1. **Lancement du chargement partitionné** 

   Lorsque vous envoyez une demande pour lancer un téléchargement partitionné, Amazon Glacier renvoie un ID de téléchargement partitionné, qui est un identifiant unique pour votre téléchargement partitionné. Cet ID sera requis pour toute opération de chargement partitionné suivante. Cet identifiant n'expire pas pendant au moins 24 heures après qu'Amazon Glacier ait terminé la tâche. 

   Dans votre demande de lancement d'un chargement partitionné, vous devez spécifier la taille des parties en nombre d'octets. Chacune des parties que vous chargez, à l'exception de la dernière partie, doit correspondre à cette taille.
**Note**  
Vous n'avez pas besoin de connaître la taille globale de l'archive lorsque vous utilisez le chargement partitionné. Cela signifie que vous pouvez utiliser des téléchargements partiels dans les cas où vous ne connaissez pas la taille de l'archive lorsque vous commencez à charger l'archive. Vous devez juste définir la taille des parties au moment du lancement d'un chargement partitionné.

   Dans la demande de lancement de chargement partitionné, vous pouvez également fournir une description facultative de l'archive. 

1. **Chargement des parties**

   Pour chaque demande de chargement de partie, vous devez inclure l'ID de chargement partitionné que vous avez obtenu à l'étape 1. Dans la demande, vous devez également spécifier la plage de contenu, en octets, en identifiant la position de la partie dans l'archive finale. Amazon Glacier utilise ensuite les informations relatives à la plage de contenus pour assembler l'archive dans le bon ordre. Etant donné que vous indiquez la plage de contenu de chaque partie que vous chargez, il détermine la position de chaque partie dans l'assemblage final de l'archive ; par conséquent, vous pouvez charger les parties dans n'importe quel ordre. Vous pouvez également charger différentes parties en parallèle. Si vous chargez une nouvelle partie en utilisant la même plage de contenu que celle définie pour une partie précédemment chargée, cette dernière est remplacée. 

1. **Achèvement (ou arrêt) du chargement partitionné**

   Après avoir chargé toutes les parties d'une archive, utilisez l'opération d'achèvement. Là encore, vous devez spécifier l'ID de chargement dans votre demande. Amazon Glacier crée une archive en concaténant les parties par ordre croissant en fonction de la plage de contenu que vous avez fournie. La réponse d'Amazon Glacier à une demande de téléchargement partitionné complet inclut un ID d'archive pour l'archive nouvellement créée. Si vous avez fourni une description d'archive facultative dans la demande Initiate Multipart Upload, Amazon Glacier l'associe à l'archive assemblée. Lorsque votre opération d'achèvement de chargement partitionné aboutit, vous ne pouvez pas faire référence à l'ID de chargement partitionné. Cela signifie que vous ne pouvez pas accéder aux parties associées à l'ID de chargement partitionné.

   Si vous arrêtez un chargement partitionné, vous ne pouvez pas charger de parties supplémentaires en utilisant cet ID de chargement partitionné. L'ensemble du stockage consommé par les parties associées au chargement partitionné arrêté est libéré. Si des parties étaient en cours de chargement, ces opérations peuvent encore réussir ou échouer même après un arrêt.

### Opérations supplémentaires de chargement partitionné
<a name="additional-mpu-operations"></a>

Amazon Glacier (Amazon Glacier) fournit les appels d'API de téléchargement partitionné supplémentaires suivants.

 
+ **Affichage des parties** : cette opération vous permet d'afficher la liste des parties d'un chargement partitionné spécifique. Elle renvoie des informations sur les parties que vous chargées dans le cadre d'un chargement partitionné. Pour chaque demande de pièces de liste, Amazon Glacier renvoie des informations portant sur un maximum de 1 000 pièces. S'il existe d'autres parties à afficher pour le chargement partitionné, le résultat est paginé et la réponse renvoyée inclut un marqueur à partir duquel poursuivre l'affichage de la liste. Vous devez envoyer des demandes supplémentaires pour extraire les parties suivantes. Notez que la liste des parties renvoyée n'inclut pas les parties dont le chargement n'est pas terminé.
+ **Affichage des chargements partitionnés** : cette opération vous permet d'obtenir la liste des chargements partitionnés en cours. Un chargement partitionné en cours est un chargement que vous avez lancé, mais que vous n’avez pas encore terminé ou arrêté. Pour chaque demande d'affichage des chargements partitionnés, Amazon Glacier renvoie jusqu'à 1 000 chargements partitionnés. S'il existe d'autres chargements partitionnés à afficher, le résultat est paginé et la réponse renvoyée inclut un marqueur à partir duquel poursuivre l'affichage de la liste. Vous devez envoyer des demandes supplémentaires pour extraire les chargements partitionnés restants.

## En bref
<a name="qfacts"></a>

Le tableau suivant fournit les principales spécifications du chargement partitionné.


| Élément | Spécification | 
| --- | --- | 
| Taille maximale d'archive | 10 000 x 4 gibioctets (Gio)  | 
| Nombre maximum de parties par chargement | 10 000 | 
| Taille de partie | De 1 Mio à 4 Gio ; la dernière partie peut être inférieure à 1 Mio. Vous spécifiez la valeur de taille en octets. La taille de la partie doit être un mébioctet (1 024 kibioctets [Kio]) multiplié par une puissance de 2. Par exemple, `1048576` (1 Mio), `2097152` (2 Mio), `4194304` (4 Mio), `8388608` (8 Mio).   | 
| Nombre maximum de parties renvoyées pour une demande de liste des parties | 1 000  | 
| Nombre maximum de chargements partitionnés renvoyés dans le cadre d'une demande d'affichage de chargements partitionnés | 1 000  | 

# Téléchargement d'archives volumineuses à l'aide du AWS CLI
<a name="uploading-an-archive-mpu-using-cli"></a>

Vous pouvez charger une archive dans Amazon Glacier (Amazon Glacier) à l'aide du AWS Command Line Interface (AWS CLI). Pour améliorer l'expérience de chargement des archives volumineuses, Amazon Glacier fournit plusieurs opérations d'API pour prendre en charge les téléchargements partitionnés. Grâce à ces opérations d'API, vous pouvez charger les archives en plusieurs parties. Ces parties peuvent être chargées indépendamment, dans n'importe quel ordre, et en parallèle. Si le chargement d'une partie échoue, vous devez uniquement recharger cette partie, pas l'archive entière. Vous pouvez utiliser le chargement partitionné pour les archives dont la taille est comprise entre 1 octet et environ 40 000 gibioctets (Gio). 

Pour plus d'informations sur les téléchargements partitionnés sur Amazon Glacier, consultez. [Chargement d'archives volumineuses en plusieurs parties (chargement partitionné)](uploading-archive-mpu.md)

**Topics**
+ [(Prérequis) Configuration du AWS CLI](#Creating-Vaults-CLI-Setup)
+ [(Prérequis) Installation de Python](#Uploading-Archives-mpu-CLI-Install-Python)
+ [(Prérequis) Création d'un coffre-fort Amazon Glacier](#Uploading-Archives-mpu-CLI-Create-Vault)
+ [Exemple : téléchargement partiel d'archives volumineuses à l'aide du AWS CLI](#Uploading-Archives-mpu-CLI-Implementation)

## (Prérequis) Configuration du AWS CLI
<a name="Creating-Vaults-CLI-Setup"></a>

1. Téléchargez et configurez l’interface AWS CLI. Pour obtenir des instructions, consultez les rubriques suivantes dans le *Guide de l’utilisateur de l’interface AWS Command Line Interface * : 

    [Installation du AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

   [Configuration du AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Vérifiez votre AWS CLI configuration en saisissant les commandes suivantes à l'invite de commande. Ces commandes ne fournissent pas directement d'informations d'identification, par conséquent ce sont les informations du profil par défaut qui sont utilisées.
   + Essayez d'utiliser la commande help.

     ```
     aws help
     ```
   + Pour obtenir la liste des coffres-forts Amazon Glacier sur le compte configuré, utilisez la `list-vaults` commande. *123456789012*Remplacez-le par votre Compte AWS identifiant.

     ```
     aws glacier list-vaults --account-id 123456789012
     ```
   + Pour voir les données de configuration actuelles pour le AWS CLI, utilisez la `aws configure list` commande.

     ```
     aws configure list
     ```

## (Prérequis) Installation de Python
<a name="Uploading-Archives-mpu-CLI-Install-Python"></a>

Pour terminer un téléchargement en plusieurs parties, vous devez calculer le hachage SHA256 arborescent de l'archive que vous chargez. Cela est différent du calcul du hachage SHA256 arborescent du fichier que vous souhaitez télécharger. Pour calculer le hachage SHA256 arborescent de l'archive que vous téléchargez, vous pouvez utiliser Java C\$1 (avec .NET) ou. Python Dans cet exemple, vous allez utiliser Python. Pour savoir comment utiliser Java ou C\$1, consultez [Calcul des totaux de contrôle](checksum-calculations.md). 

Pour plus d'informations sur l'installation de Python, consultez [Install ou update Python](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation) dans le *Guide du développeur Boto3*.

## (Prérequis) Création d'un coffre-fort Amazon Glacier
<a name="Uploading-Archives-mpu-CLI-Create-Vault"></a>

Pour utiliser l'exemple suivant, vous devez avoir créé au moins un coffre-fort Amazon Glacier. Pour plus d'informations sur la création de coffres, consultez [Création d'un coffre-fort dans Amazon Glacier](creating-vaults.md).

## Exemple : téléchargement partiel d'archives volumineuses à l'aide du AWS CLI
<a name="Uploading-Archives-mpu-CLI-Implementation"></a>

Dans cet exemple, vous allez créer un fichier et le charger en plusieurs parties sur Amazon Glacierà l'aide d'opérations d'API de chargement partitionné.
**Important**  
Avant de commencer cette procédure, assurez-vous d'avoir effectué toutes les étapes prérequises. Pour télécharger une archive, vous devez avoir créé un coffre, le AWS CLI configurer et être prêt à utiliser Java le langage C\$1 ou Python à calculer un hachage SHA256 arborescent.

La procédure suivante utilise les `complete-multipart-upload` AWS CLI commandes `initiate-multipart-upload``upload-multipart-part`, et. 

Pour obtenir des informations plus détaillées sur chacun de ces commandes, consultez [https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html), [https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html) et [https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html) dans le *guide de référence des commandes AWS CLI *.

1. Utilisez la commande [https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html) pour créer une ressource de chargement partitionné. Dans votre demande, spécifiez la taille des parties en nombre d'octets. Chacune des parties que vous chargez, à l'exception de la dernière, doit avoir cette taille. Vous n'avez pas besoin de connaître la taille globale de l'archive lorsque vous lancez un chargement. Cependant, vous aurez besoin de connaître la taille totale, en octets, de chaque partie pour effectuer le chargement à l'étape finale.

   Dans la commande ci-dessous, remplacez les valeurs des paramètres `--vault-name` et `--account-ID` par vos propres informations. Cette commande indique que vous allez charger une archive avec des parties d'une taille d'1 mébioctet (Mio) (1 024 x 1024 octets) par fichier. Remplacez la valeur de ce paramètre `--part-size` si nécessaire. 

   ```
   aws glacier initiate-multipart-upload --vault-name awsexamplevault --part-size 1048576 --account-id 123456789012
   ```

   Sortie attendue :

   ```
   {
   "location": "/123456789012/vaults/awsexamplevault/multipart-uploads/uploadId",
   "uploadId": "uploadId"
   }
   ```

   Une fois terminée, la commande affiche l'ID de téléchargement partitionné et l'emplacement de la ressource de téléchargement partitionné dans Amazon Glacier. Cet ID de chargement vous servira dans les prochaines étapes.

1. Pour cet exemple, vous pouvez utiliser les commandes suivantes pour créer un fichier de 4,4 Mio, le scinder en fragments de 1 Mio et charger chacun de ces fragments. Pour charger vos propres fichiers, vous pouvez suivre une procédure similaire en scindant vos données en fragments et en chargeant chaque partie. 

   

**Linux ou macOS**  
La commande suivante crée un fichier de 4,4 Mio, nommé `file_to_upload`, sur Linux ou macOS.

   ```
   mkfile -n 9000b file_to_upload
   ```

**Windows**  
La commande suivante crée un fichier de 4,4 Mio, nommé `file_to_upload`, sur Windows.

   ```
   fsutil file createnew file_to_upload 4608000
   ```

1. Vous allez ensuite scinder ce fichier en fragments de 1 Mio. 

   ```
   split -b 1048576 file_to_upload chunk
   ```

   Vous disposez maintenant des cinq fragments suivants. Les quatre premiers font 1 Mio, et le dernier environ 400 kibioctets (Kio). 

   ```
   chunkaa
   chunkab
   chunkac
   chunkad
   chunkae
   ```

1. Utilisez la commande [https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html) pour charger une partie d'une archive. Vous pouvez charger les parties de l'archive dans n'importe quel ordre. Vous pouvez également les charger en parallèle. Vous pouvez charger jusqu'à 10 000 parties pour un chargement partitionné.

   Dans la commande suivante, remplacez les valeurs des paramètres `--vault-name`, `--account-ID` et `--upload-id`. L'ID de chargement doit correspondre à l'ID indiqué comme sortie de la commande `initiate-multipart-upload`. Le paramètre `--range` indique que vous allez charger une partie dont la taille est de 1 Mio (1 024 x 1 024 octets). Cette taille doit correspondre à celle que vous avez spécifiée dans la commande `initiate-multipart-upload`. Ajustez cette valeur de taille si nécessaire. Le paramètre `--body` indique le nom de la partie que vous chargez actuellement.

   ```
   aws glacier upload-multipart-part --body chunkaa --range='bytes 0-1048575/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   En cas de succès, la commande génère une sortie contenant le total de contrôle de la partie chargée.

1. Exécutez une nouvelle fois la commande `upload-multipart-part` pour charger les parties restantes de votre chargement partitionné. Mettez à jour les valeurs des paramètres `--range` et `–-body` pour chaque commande de sorte qu'elles correspondent à la partie que vous chargez. 

   ```
   aws glacier upload-multipart-part --body chunkab --range='bytes 1048576-2097151/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   ```
   aws glacier upload-multipart-part --body chunkac --range='bytes 2097152-3145727/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   ```
   aws glacier upload-multipart-part --body chunkad --range='bytes 3145728-4194303/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   ```
   aws glacier upload-multipart-part --body chunkae --range='bytes 4194304-4607999/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```
**Note**  
La valeur du paramètre `--range` de la commande finale est inférieure, car notre chargement fait moins de 1 Mio. En cas de succès, chaque commande génère une sortie contenant le total de contrôle de chaque partie chargée.

1. Ensuite, vous allez assembler l'archive et terminer le chargement. Vous devez inclure la taille totale et le hachage SHA256 arborescent de l'archive.

   Pour calculer le hachage SHA256 arborescent de l'archive, vous pouvez utiliser Java C\$1 ou. Python Dans cet exemple, vous allez utiliser Python. Pour savoir comment utiliser Java ou C\$1, consultez [Calcul des totaux de contrôle](checksum-calculations.md).

   Créez le fichier Python `checksum.py` et insérez le code suivant. Si nécessaire, remplacez le nom du fichier d'origine.

   ```
   from botocore.utils import calculate_tree_hash
   					
   checksum = calculate_tree_hash(open('file_to_upload', 'rb'))
   print(checksum)
   ```

1. Exécutez `checksum.py` pour calculer le hachage de SHA256 l'arbre. Le hachage suivant peut ne pas correspondre à votre sortie.

   ```
   $ python3 checksum.py
   $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
   ```

1. Utilisez la commande [https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html) pour terminer le chargement de l'archive. Remplacez les valeurs des paramètres `--vault-name`, `--account-ID`, `--upload-ID` et `--checksum`. La valeur du paramètre `--archive` indique la taille totale, en octets, de l'archive. Cette valeur doit correspondre à la somme des tailles des différentes parties que vous avez chargées. Remplacez cette valeur si nécessaire. 

   ```
   aws glacier complete-multipart-upload --archive-size 4608000 --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID --checksum checksum
   ```

   Une fois terminée, la commande affiche l'ID, la somme de contrôle et l'emplacement de l'archive dans Amazon Glacier. 

# Chargement d'archives volumineuses en plusieurs parties à l'aide du kit SDK Amazon pour Java
<a name="uploading-an-archive-mpu-using-java"></a>

Les niveaux de [haut et de bas niveau APIs](using-aws-sdk.md) fournis par le SDK Amazon pour Java fournissent une méthode pour télécharger une archive volumineuse ([Téléchargement d'une archive dans Amazon Glacier](uploading-an-archive.md)voir). 

 
+ 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 une archive en une seule opération ou utilise le support de téléchargement partitionné d'Amazon Glacier (Amazon Glacier) pour 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, consultez[Utilisation du AWS SDK pour Java avec Amazon Glacier](using-aws-sdk-for-java.md).

**Topics**
+ [Téléchargement partiel d'archives volumineuses à l'aide de l'API de haut niveau du AWS SDK pour Java](#uploading-an-archive-in-parts-highlevel-using-java)
+ [Téléchargez des archives volumineuses en plusieurs parties à l'aide de l'API de bas niveau du AWS SDK pour Java](#uploading-an-archive-mpu-using-java-lowlevel)

## Téléchargement partiel d'archives volumineuses à l'aide de l'API de haut niveau du AWS SDK pour Java
<a name="uploading-an-archive-in-parts-highlevel-using-java"></a>

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 Java](uploading-an-archive-single-op-using-java.md#uploading-an-archive-single-op-high-level-using-java).

## Téléchargez des archives volumineuses en plusieurs parties à l'aide de l'API de bas niveau du AWS SDK pour Java
<a name="uploading-an-archive-mpu-using-java-lowlevel"></a>

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 Java.

 

1. 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. 

1. 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.

1. 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. 

1. 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 : téléchargement d'une archive volumineuse en plusieurs parties à l'aide du AWS SDK pour Java
<a name="upload-archive-mpu-java-example"></a>

L'exemple de code Java suivant utilise le AWS SDK pour Java 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, reportez-vous à[Exécution d'exemples Java pour Amazon Glacier à l'aide d'Eclipse](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java). Vous devez mettre à jour le code tel qu'il est présenté avec le nom du fichier que vous souhaitez charger.

 

**Note**  
Cet exemple concerne des tailles de partie comprises entre 1 Mo et 1 Go. Toutefois, Amazon Glacier prend en charge des tailles de partie pouvant aller jusqu'à 4 Go. 

**Example**  

```
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.TreeHashGenerator;
import com.amazonaws.services.glacier.model.CompleteMultipartUploadRequest;
import com.amazonaws.services.glacier.model.CompleteMultipartUploadResult;
import com.amazonaws.services.glacier.model.InitiateMultipartUploadRequest;
import com.amazonaws.services.glacier.model.InitiateMultipartUploadResult;
import com.amazonaws.services.glacier.model.UploadMultipartPartRequest;
import com.amazonaws.services.glacier.model.UploadMultipartPartResult;
import com.amazonaws.util.BinaryUtils;

public class ArchiveMPU {

    public static String vaultName = "examplevault";
    // This example works for part sizes up to 1 GB.
    public static String partSize = "1048576"; // 1 MB.
    public static String archiveFilePath = "*** provide archive file path ***";
    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 {
            System.out.println("Uploading an archive.");
            String uploadId = initiateMultipartUpload();
            String checksum = uploadParts(uploadId);
            String archiveId = CompleteMultiPartUpload(uploadId, checksum);
            System.out.println("Completed an archive. ArchiveId: " + archiveId);
            
        } catch (Exception e) {
            System.err.println(e);
        }

    }
    
    private static String initiateMultipartUpload() {
        // Initiate
        InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest()
            .withVaultName(vaultName)
            .withArchiveDescription("my archive " + (new Date()))
            .withPartSize(partSize);            
        
        InitiateMultipartUploadResult result = client.initiateMultipartUpload(request);
        
        System.out.println("ArchiveID: " + result.getUploadId());
        return result.getUploadId();
    }

    private static String uploadParts(String uploadId) throws AmazonServiceException, NoSuchAlgorithmException, AmazonClientException, IOException {

        int filePosition = 0;
        long currentPosition = 0;
        byte[] buffer = new byte[Integer.valueOf(partSize)];
        List<byte[]> binaryChecksums = new LinkedList<byte[]>();
        
        File file = new File(archiveFilePath);
        FileInputStream fileToUpload = new FileInputStream(file);
        String contentRange;
        int read = 0;
        while (currentPosition < file.length())
        {
            read = fileToUpload.read(buffer, filePosition, buffer.length);
            if (read == -1) { break; }
            byte[] bytesRead = Arrays.copyOf(buffer, read);

            contentRange = String.format("bytes %s-%s/*", currentPosition, currentPosition + read - 1);
            String checksum = TreeHashGenerator.calculateTreeHash(new ByteArrayInputStream(bytesRead));
            byte[] binaryChecksum = BinaryUtils.fromHex(checksum);
            binaryChecksums.add(binaryChecksum);
            System.out.println(contentRange);
                        
            //Upload part.
            UploadMultipartPartRequest partRequest = new UploadMultipartPartRequest()
            .withVaultName(vaultName)
            .withBody(new ByteArrayInputStream(bytesRead))
            .withChecksum(checksum)
            .withRange(contentRange)
            .withUploadId(uploadId);               
        
            UploadMultipartPartResult partResult = client.uploadMultipartPart(partRequest);
            System.out.println("Part uploaded, checksum: " + partResult.getChecksum());
            
            currentPosition = currentPosition + read;
        }
        fileToUpload.close();
        String checksum = TreeHashGenerator.calculateTreeHash(binaryChecksums);
        return checksum;
    }

    private static String CompleteMultiPartUpload(String uploadId, String checksum) throws NoSuchAlgorithmException, IOException {
        
        File file = new File(archiveFilePath);

        CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest()
            .withVaultName(vaultName)
            .withUploadId(uploadId)
            .withChecksum(checksum)
            .withArchiveSize(String.valueOf(file.length()));
        
        CompleteMultipartUploadResult compResult = client.completeMultipartUpload(compRequest);
        return compResult.getLocation();
    }
}
```

# Téléchargement d'archives volumineuses à l'aide du AWS SDK pour .NET
<a name="uploading-an-archive-mpu-using-dotnet"></a>

Les niveaux de [haut et de bas niveau APIs](using-aws-sdk.md) 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 Glacier](uploading-an-archive.md)voir). 

 
+ 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, consultez[Utilisation du AWS SDK pour .NET avec Amazon Glacier](using-aws-sdk-for-dot-net.md).

**Topics**
+ [Téléchargement partiel d'archives volumineuses à l'aide de l'API de haut niveau du AWS SDK pour .NET](#uploading-an-archive-in-parts-highlevel-using-dotnet)
+ [Téléchargement partiel d'archives volumineuses à l'aide de l'API de bas niveau du AWS SDK pour .NET](#uploading-an-archive-in-parts-lowlevel-using-dotnet)

## Téléchargement partiel d'archives volumineuses à l'aide de l'API de haut niveau du AWS SDK pour .NET
<a name="uploading-an-archive-in-parts-highlevel-using-dotnet"></a>

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](uploading-an-archive-single-op-using-dotnet.md#uploading-an-archive-single-op-highlevel-using-dotnet).

## Téléchargement partiel d'archives volumineuses à l'aide de l'API de bas niveau du AWS SDK pour .NET
<a name="uploading-an-archive-in-parts-lowlevel-using-dotnet"></a>

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.

 

1. 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. 

1. 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.

1. 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. 

1. 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
<a name="upload-archive-mpu-dotnet-example"></a>

L'exemple de code C\$1 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, reportez-vous à[Exemples de code en cours d'exécution](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet). Vous devez mettre à jour le code tel qu'il est présenté avec le nom d'un fichier que vous souhaitez charger.

**Example**  

```
using System;
using System.Collections.Generic;
using System.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.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;
    }
  }
}
```

# Chargement d'archives volumineuses en plusieurs parties à l'aide de l'API REST
<a name="uploading-an-archive-mpu-using-rest"></a>

Comme indiqué dans [Chargement d'archives volumineuses en plusieurs parties (chargement partitionné)](uploading-archive-mpu.md), le chargement partitionné fait référence à un ensemble d'opérations qui vous permettent de charger une archive en plusieurs parties et d'effectuer des opérations connexes. Pour plus d'informations sur ces opérations, consultez les rubriques de référence API suivantes :

 
+ [Lancement de chargement partitionné (POST multipart-uploads)](api-multipart-initiate-upload.md)
+ [Partie chargement (PUT uploadID)](api-upload-part.md)
+ [Achèvement du chargement partitionné (POST uploadID)](api-multipart-complete-upload.md)
+ [Annulation de chargement partitionné (DELETE uploadID)](api-multipart-abort-upload.md)
+ [Répertorier les parties (GET uploadID)](api-multipart-list-parts.md)
+ [Afficher la liste des chargements partitionnés (GET multipart-uploads)](api-multipart-list-uploads.md)