

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

# Signature des requêtes
<a name="amazon-glacier-signing-requests"></a>

Amazon Glacier exige que vous authentifiiez chaque demande que vous envoyez en signant la demande. Pour signer une demande, vous calculez une signature numérique à l’aide d’une fonction de hachage cryptographique. Un hachage cryptographique est une fonction qui renvoie une valeur de hachage unique basée sur l’entrée. L’entrée de la fonction de hachage contient le texte de la demande et votre clé d’accès secrète. La fonction de hachage renvoie une valeur de hachage que vous incluez dans la demande comme votre signature. La signature fait partie de l’en-tête `Authorization` de votre demande. 

Après réception de votre demande, Amazon Glacier recalcule la signature en utilisant la même fonction de hachage et les mêmes entrées que celles que vous avez utilisées pour signer la demande. Si la signature obtenue correspond à celle de la demande, Amazon Glacier traite la demande. Sinon, la demande est rejetée. 

Amazon Glacier prend en charge l'authentification à l'aide de [AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). Le processus de calcul d’une signature peut être divisé en trois tâches :

 
+   [Tâche 1 : créer une demande canonique](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html)

  Réorganiser votre demande HTTP dans un format canonique. L'utilisation d'un formulaire canonique est nécessaire car Amazon Glacier utilise le même formulaire canonique lorsqu'il recalcule une signature pour la comparer à celle que vous avez envoyée. 
+   [Tâche 2 : créer une chaîne de connexion](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html)

  Créez une chaîne que vous utiliserez comme une des valeurs d’entrée pour votre fonction de hachage cryptographique. La chaîne, appelée la *chaîne de connexion*, est une concaténation du nom de l’algorithme de hachage, de la date de la demande, d’une chaîne d’*informations d’identification* et de la demande convertie sous forme canonique de la tâche précédente. La chaîne d'*étendue des informations d'identification* elle-même est une concaténation d'informations de date, de AWS région et de service.
+   [Tâche 3 : créer une signature](https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html)

  Créez une signature pour votre demande à l’aide d’une fonction de hachage cryptographique qui accepte deux chaînes d’entrée : votre *chaîne de connexion* et une *clé dérivée*. La *clé dérivée* est calculée en commençant par votre clé d'accès secrète et en utilisant la chaîne de *portée des informations d'identification* pour créer une série de codes d'authentification des messages basés sur le hachage ()HMACs. Notez que la fonction de hachage utilisée dans cette étape de signature n'est pas l'algorithme de hachage arborescent utilisé dans Amazon Glacier pour charger les données. APIs

**Topics**
+ [Exemple de calcul de signature](#example-signature-calculation)
+ [Calcul des Signatures pour les opérations de streaming](#signature-calculation-streaming)

## Exemple de calcul de signature
<a name="example-signature-calculation"></a>

L'exemple suivant vous guide à travers les détails de la création d'une signature pour [Création de coffre (PUT vault)](api-vault-put.md). L’exemple peut être utilisé comme référence pour vérifier votre méthode de calcul de signature. Pour plus d'informations, consultez la section [Signature des demandes AWS d'API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) dans le *guide de l'utilisateur IAM*. 

Dans cet exemple il est supposé que :
+ L'horodatage de la demande est `Fri, 25 May 2012 00:24:53 GMT`.
+ Le point de terminaison est la région USA Est (Virginie du Nord), ` us-east-1`. 

La syntaxe générale de la demande (y compris le corps JSON) est : 

```
PUT /-/vaults/examplevault HTTP/1.1
Host: glacier.us-east-1.amazonaws.com
Date: Fri, 25 May 2012 00:24:53 GMT
Authorization: {{SignatureToBeCalculated}}
x-amz-glacier-version: 2012-06-01
```

La forme canonique de la demande calculée pour [Tâche 1 : Créer une demande canonique](#SignatureCalculationTask1) est :

 

```
PUT
/-/vaults/examplevault

host:glacier.us-east-1.amazonaws.com
x-amz-date:20120525T002453Z
x-amz-glacier-version:2012-06-01

host;x-amz-date;x-amz-glacier-version
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
```

La dernière ligne de la demande canonique est le hachage du corps de la demande. Notez également la troisième ligne vide dans la demande canonique. Elle provient du fait qu'il n'y a aucun paramètre de requête pour cette API. 

La *chaîne de connexion* pour la [tâche 2 : créer une chaîne de connexion](#SignatureCalculationTask2) est :

 

```
AWS4-HMAC-SHA256
20120525T002453Z
20120525/us-east-1/glacier/aws4_request
5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
```

 

La première ligne de la *chaîne de connexion* est l'algorithme, la deuxième ligne est l'horodatage, la troisième ligne est les *informations d'identification*, et la dernière ligne est un hachage de la demande canonique issu de la [tâche 1 : créer une demande canonique](#SignatureCalculationTask1). Le nom du service à utiliser dans les informations d'identification est `glacier`.

Pour la [tâche 3 : créer une signature](#SignatureCalculationTask3), la *clé dérivée* peut être représentée sous la forme :

 

```
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")
```

Si la clé d'accès secrète `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` est utilisée, la signature calculée est :

 

```
3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
```

 

L’étape finale consiste à construire l’en-tête `Authorization`. Pour la clé d'accès de la démonstration `AKIAIOSFODNN7EXAMPLE`, l'en-tête (avec les sauts de ligne ajoutés pour faciliter la lecture) est :

 

```
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, 
SignedHeaders=host;x-amz-date;x-amz-glacier-version, 
Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
```

 

## Calcul des Signatures pour les opérations de streaming
<a name="signature-calculation-streaming"></a>

[Chargement d'archive (POST archive)](api-archive-post.md) et [Partie chargement (PUT uploadID)](api-upload-part.md) sont des opérations de streaming qui exigent d'inclure un en-tête supplémentaire `x-amz-content-sha256` lors de la signature et de l'envoi de votre demande. Les étapes de signature pour les opérations de streaming sont identiques à celles des autres opérations, mais comprennent aussi l'ajout de l'en-tête de streaming.

Le calcul de l'en-tête de diffusion `x-amz-content-sha256` est basé sur le SHA256 hachage de l'ensemble du contenu (charge utile) à télécharger. Notez que ce calcul est différent de l' SHA256 arbre hash ([Calcul des totaux de contrôle](checksum-calculations.md)). Hormis les cas triviaux, la valeur de hachage SHA 256 des données de charge utile sera différente du hachage SHA256 arborescent des données de charge utile. 

Si les données de charge utile sont spécifiées sous forme de tableau d'octets, vous pouvez utiliser l'extrait de code Java suivant pour calculer le hachage. SHA256 

 

```
public static byte[] computePayloadSHA256Hash2(byte[] payload) throws NoSuchAlgorithmException, IOException {
    BufferedInputStream bis = 
       new BufferedInputStream(new ByteArrayInputStream(payload));
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    byte[] buffer = new byte[4096];
    int bytesRead = -1;
    while ( (bytesRead = bis.read(buffer, 0, buffer.length)) != -1 ) {
        messageDigest.update(buffer, 0, bytesRead);
    }
    return messageDigest.digest();
}
```

De même, en C\#, vous pouvez calculer le SHA256 hachage des données de charge utile comme indiqué dans l'extrait de code suivant. 

 

```
public static byte[] CalculateSHA256Hash(byte[] payload)
{
    SHA256 sha256 = System.Security.Cryptography.SHA256.Create();
    byte[] hash = sha256.ComputeHash(payload);

    return hash;
}
```

### Exemple de calcul de signature pour l'API de streaming
<a name="example-signature-calculation-streaming"></a>

L'exemple suivant explique en détail comment créer une signature pour l'un des deux [Chargement d'archive (POST archive)](api-archive-post.md) types de diffusion en continu APIs dans Amazon Glacier. Dans cet exemple il est supposé que :
+ L'horodatage de la demande est `Mon, 07 May 2012 00:00:00 GMT`.
+ Le point de terminaison est la région USA Est (Virginie du Nord), us-east-1.
+ La charge utile du contenu est une chaîne « Bienvenue sur Amazon Glacier ». 

La syntaxe de demande générale (y compris le corps JSON) est illustrée dans l'exemple ci-dessous. Notez que l'en-tête ` x-amz-content-sha256` est inclus. Dans cet exemple simplifié, le paramètre `x-amz-sha256-tree-hash` et le paramètre `x-amz-content-sha256` ont la même valeur. Cependant, ce n'est pas le cas pour les téléchargements d'archives supérieures à 1 Mo.

```
POST /-/vaults/examplevault HTTP/1.1
Host: glacier.us-east-1.amazonaws.com
Date: Mon, 07 May 2012 00:00:00 GMT
x-amz-archive-description: my archive
x-amz-sha256-tree-hash: SHA256 tree hash
x-amz-content-sha256: SHA256 payload hash  
Authorization: {{SignatureToBeCalculated}}
x-amz-glacier-version: 2012-06-01
```

La forme canonique de la demande calculée pour la [tâche 1 : créer une demande canonique](#SignatureCalculationTask1) est illustrée ci-dessous : Notez que l'en-tête de streaming `x-amz-content-sha256` est inclus avec sa valeur. Cela signifie que vous devez d'abord lire la charge utile et calculer le SHA256 hachage, puis calculer la signature.

 

```
POST
/-/vaults/examplevault

host:glacier.us-east-1.amazonaws.com
x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
x-amz-date:20120507T000000Z
x-amz-glacier-version:2012-06-01

host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version
726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
```

Le reste du calcul de la signature suit les étapes décrites dans [Exemple de calcul de signature](#example-signature-calculation). L'en-tête `Authorization` qui utilise la clé d'accès secrète `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` et la clé d'accès `AKIAIOSFODNN7EXAMPLE` est illustré ci-dessous (avec des sauts de ligne ajoutés pour faciliter la lecture) :

 

```
Authorization=AWS4-HMAC-SHA256 
Credential=AKIAIOSFODNN7EXAMPLE/20120507/us-east-1/glacier/aws4_request, 
SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version, 
Signature=b092397439375d59119072764a1e9a144677c43d9906fd98a5742c57a2855de6
```

 