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.
Calculs de signature pour les en-têtes de fin (téléchargements fragmentés) (AWS Signature (version 4)
Lorsque vous authentifiez des demandes à l'aide de l'Authorizationen-tête, vous pouvez également télécharger la charge utile par morceaux. Lorsque vous envoyez les données de l'objet par morceaux, vous avez également la possibilité d'inclure des en-têtes de fin. (Pour plus d’informations, consultez Calculs de signature pour l'en-tête d'autorisation : transfert de la charge utile en plusieurs segments (téléchargement fragmenté) (AWS Signature (version 4).) Cette section décrit les étapes à suivre lorsque vous souhaitez inclure un en-tête de fin à la fin de votre téléchargement de plusieurs blocs.
Important
Lorsque vous incluez des en-têtes de fin, vous devez envoyer les informations suivantes dans votre en-tête initial :
-
Vous devez
x-amz-content-sha256définir une valeur appropriée qui indique qu'une remorque sera incluse. Pour connaître les valeurs acceptables pourx-amz-content-sha256, consultezAuthentification des demandes : utilisation de l'en-tête d'autorisation (AWS Signature (version 4). -
Vous devez configurer
x-amz-trailerpour indiquer le contenu que vous incluez dans votre en-tête final.
Les en-têtes de fin ne sont envoyés qu'une fois que les morceaux ont été chargés. Les segments précédents sont envoyés normalement et signés comme décrit dans les sections précédentes, y compris l'envoi du dernier bloc avec une charge utile de 0 octet. Les en-têtes de fin sont inclus dans leur propre bloc et envoyés après le dernier bloc avec une charge utile de 0 octet. Par exemple, si vos données se terminaient par un bloc de 100 Ko, vous enverriez les informations suivantes :
-
Morceaux de données précédents
-
Bloc final de 100 Ko de l'objet
-
Bloc de 0 octet indiquant la fin de l'objet
-
Bloc d'en-têtes de fin
Exemples : vérification des calculs de signature
Vous pouvez utiliser les exemples de cette section comme référence pour vérifier les calculs de signature dans votre code. Avant de passer en revue les exemples, prenez note des points suivants :
-
Les calculs de signature de ces exemples utilisent les informations d'identification de sécurité suivantes.
Paramètre Value AWSAccessKeyIdAKIAIOSFODNN7EXAMPLEAWSSecretAccessKeywJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -
Tous les exemples utilisent l'horodatage de la requête 20130524T000000Z ().
Fri, 24 May 2013 00:00:00 GMT -
Tous les exemples sont utilisés
examplebucketcomme nom de compartiment. -
Le compartiment est supposé se trouver dans la région de l'Est des États-Unis (Virginie du Nord), et les informations d'identification
Scopeet lesSigning Keycalculs sont utilisésus-east-1comme spécificateur de région. Pour plus d’informations, consultez Régions et points de terminaison dans la Référence générale Amazon Web Services. -
Vous pouvez utiliser des requêtes de style de chemin ou des requêtes de style hébergées virtuellement. Les exemples suivants utilisent des requêtes de style hébergées virtuellement, par exemple :
https://examplebucket.s3.amazonaws.com/photos/photo1.jpgPour plus d'informations, consultez la section Hébergement virtuel de compartiments dans le guide de l'utilisateur d'Amazon Simple Storage Service.
L'exemple suivant envoie une PUT demande pour télécharger un objet. Les calculs de signature supposent ce qui suit :
-
Vous chargez un fichier texte de 65 Ko dont le contenu est une chaîne d'un caractère composée de la lettre « a ».
-
La taille du bloc est de 64 Ko. Par conséquent, la charge utile est téléchargée en trois blocs, 64 Ko, 1 Ko, et le dernier bloc contenant 0 octet de données de bloc.
-
L'objet obtenu porte le nom de clé
chunkObject.txt. -
Vous faites une demande
REDUCED_REDUNDANCYen tant que classe de stockage en ajoutant l'en-tête dex-amz-storage-classdemande. -
Le transfert inclut une valeur de somme de contrôle CRC32C en tant qu'en-tête de fin.
Pour plus d'informations sur l'action de l'API, consultez PutObject. La syntaxe générale des requêtes est la suivante :
PUT /examplebucket/chunkObject.txt HTTP/1.1 Host: s3.amazonaws.com x-amz-date: 20130524T000000Z x-amz-storage-class: REDUCED_REDUNDANCY Authorization:SignatureToBeCalculatedx-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER Content-Encoding: aws-chunked x-amz-decoded-content-length: 66560 x-amz-trailer: x-amz-checksum-crc32c Content-Length: 66946<Payload>
Les étapes suivantes présentent les calculs de signature.
-
Signature d'origine — Créer une chaîne à signer
-
CanonicalRequest
PUT /examplebucket/chunkObject.txt content-encoding:aws-chunked host:s3.amazonaws.com x-amz-content-sha256:STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER x-amz-date:20130524T000000Z x-amz-decoded-content-length:66560 x-amz-storage-class:REDUCED_REDUNDANCY x-amz-trailer:x-amz-checksum-crc32c content-encoding;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-storage-class;x-amz-trailer STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILERDans la requête canonique, la troisième ligne est vide car elle ne contient aucun paramètre de requête. La dernière ligne est la chaîne constante fournie comme valeur de la charge utile hachée, qui doit être identique à la valeur de.
x-amz-content-sha256 header -
StringToSign
AWS4-HMAC-SHA256 20130524T000000Z 20130524/us-east-1/s3/aws4_request 44d48b8c2f70eae815a0198cc73d7a546a73a93359c070abbaa5e6c7de112559Note
Pour plus d'informations sur chacune des lignes de la chaîne à signer, consultez le schéma qui explique le calcul de la signature initiale.
-
-
SigningKey
signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "<YourSecretAccessKey>","20130524"),"us-east-1"),"s3"),"aws4_request") -
Signature de la graine
106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e -
En-tête Authorization
L'en-tête Authorization qui en résulte est le suivant :
AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=content-encoding;content-length;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-storage-class,Signature=106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e -
Bloc 1 : (65536 octets, avec une valeur 97 pour la lettre « a »)
-
Chaîne en morceaux à signer :
AWS4-HMAC-SHA256-PAYLOAD 20130524T000000Z 20130524/us-east-1/s3/aws4_request 106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 bf718b6f653bebc184e1479f1935b8da974d701b893afcf49e701f3e2f9f9c5aNote
Pour plus d'informations sur chaque ligne de la chaîne à signer, consultez le schéma de la rubrique précédente (Calcul de la signature de la graine) qui montre les différents composants de la chaîne à signer. Par exemple, les trois dernières lignes sont les suivantes :
previous-signaturehash("")hash(current-chunk-data)
-
Signature du morceau :
b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2 -
Données partielles envoyées :
10000;chunk-signature=b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2 <65536-bytes>
-
-
Bloc 2 : (1024 octets, avec une valeur 97 pour la lettre « a »)
-
Chaîne en morceaux à signer :
AWS4-HMAC-SHA256-PAYLOAD 20130524T000000Z 20130524/us-east-1/s3/aws4_request b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 2edc986847e209b4016e141a6dc8716d3207350f416969382d431539bf292e4a -
Signature du morceau :
1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7 -
Données partielles envoyées :
400;chunk-signature=1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7 <1024-bytes>
-
-
Bloc 3 : (données de 0 octet)
-
Chaîne en morceaux à signer :
AWS4-HMAC-SHA256-PAYLOAD 20130524T000000Z 20130524/us-east-1/s3/aws4_request 1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -
Signature du morceau :
2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992 -
Données partielles envoyées :
0;chunk-signature=2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
-
-
Partie 4 : En-têtes de fin
-
Chaîne en forme de bande annonce à signer :
AWS4-HMAC-SHA256-TRAILER 20130524T000000Z 20130524/us-east-1/s3/aws4_request 2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992 1e376db7e1a34a8ef1c4bcee131a2d60a1cb62503747488624e10995f448d774Note
Les deux dernières lignes sont
previous-signature(la signature du bloc de données de 0 octet),hash(trailing-checksum-header-name:base64-encoded-trailing-checksum-value\n).Le hachage est calculé comme suit, sans espace :
Le nom de l'en-tête de la somme de contrôle de fin
Un deux-points (
:)La valeur de la somme de contrôle finale codée en base64
Un caractère de nouvelle ligne (
\n).
Dans cet exemple, où vous utilisez l'algorithme de
crc32chachage, avec la valeur de somme de contrôle codée en base64sOO8/Q==, vous pouvez représenter le calcul comme suit :.hash('x-amz-checksum-crc32c:sOO8/Q==\n') -
Signature du morceau :
d81f82fc3505edab99d459891051a732e8730629a2e4a59689829ca17fe2e435 -
Données partielles envoyées :
x-amz-checksum-crc32c:sOO8/Q== x-amz-trailer-signature:d81f82fc3505edab99d459891051a732e8730629a2e4a59689829ca17fe2e435
-