Je souhaite utiliser le total de contrôle MD5 d'un objet pour vérifier l'intégrité de ce dernier lorsque je l'importe dans un compartiment Amazon S3. Je souhaite également stocker cette valeur dans un en-tête HTTP personnalisé pour pouvoir vérifier l'intégrité de l'objet lorsqu'il est téléchargé depuis S3.

Commencez par calculer le total de contrôle MD5 de l'objet que vous importez dans S3. Lorsque vous importez l'objet via l'interface de ligne de commande AWS, vous spécifiez certains paramètres pour vérifier l'intégrité de cet objet et pour stocker le total de contrôle MD5 de ce dernier dans un en-tête HTTP.

Suivez la procédure ci-dessous pour calculer le total de contrôle d'un objet, pour vérifier l'intégrité de cet objet lorsque vous l'importez dans Amazon S3 et pour stocker ce total dans un en-tête HTTP personnalisé. Le total de contrôle MD5 permet de vérifier l'intégrité de l'objet lorsqu'il est téléchargé depuis S3.

1. Obtenez le total de contrôle MD5 base64 du fichier à charger.

Sous Windows : téléchargez l'utilitaire File Checksum Integrity Verifier (FCIV) et extrayez son contenu dans un dossier. Ajoutez ensuite l'emplacement de ce dossier au chemin d'accès système Windows. Pour ce faire, exécutez la commande suivante à partir d'une invite de commande avec élévation de privilèges (Exécuter en tant qu'administrateur) en remplaçant c:\fciv par le dossier qui contient les fichiers extraits de l'utilitaire FCIV :

C:>set path=%path%;c:\fciv

Notez que lorsque vous modifiez le chemin d'accès système Windows à partir d'une invite de commande, la modification n'est pas conservée au redémarrage de Windows. Si vous voulez modifier la variable d'environnement du chemin d'accès système Windows de façon permanente, consultez la documentation Windows ou recherchez sur le Web « Modifier la variable path sous Windows X » en remplaçant X par votre version de Windows.

Après avoir installé l'utilitaire FCIV et mis à jour la variable d'environnement %path% avec l'emplacement d'extraction des fichiers de cet utilitaire, exécutez la commande suivante pour renvoyer le total de contrôle MD5 hexadécimal du fichier à charger sur S3. Remplacez c:\S3\testfile par l'emplacement du fichier que vous chargez sur S3 :

fciv.exe c:\s3\testfile

Remarque : si le chemin d'accès au fichier contient des espaces, indiquez-le entre guillemets (").

La valeur renvoyée sera similaire à la valeur suivante renvoyée lors du calcul du total de contrôle MD5 du fichier C:\Windows\explorer.exe :

fciv C:\Windows\explorer.exe
//
// File Checksum Integrity Verifier version 2.05.
//
e1b0af69bfb6cbde9b53c55e4bf91992 c:\windows\explorer.exe

Important : le total de contrôle MD5 renvoyé par l'utilitaire FCIV est une valeur hexadécimale qui doit être convertie au format base64 pour pouvoir être utilisée comme total de contrôle pour le téléchargement de messages sur S3. Si vous utilisez un total de contrôle MD5 hexadécimal, vous recevrez le message d'erreur « La valeur Content-MD5 spécifiée n'est pas valide ». Plusieurs convertisseurs de chaînes hexadécimales en base64 sont disponibles sur le Web. Si vous préférez, vous pouvez télécharger un code de script tel que le script HexToBase64, qui est disponible à l'adresse http://www.rlmueller.net/Programs/HexToBase64.txt. L'équivalent codé en base64 de la valeur hexadécimale renvoyée par l'utilitaire FCIV dans cet exemple est WZOTosUmxoARnYQVXZDx5Q==.

Sous Linux : Linux offre en mode natif la possibilité de calculer le total de contrôle MD5 base64 d'un fichier à l'aide de la commande openssl. Pour déterminer le total de contrôle MD5 base64 d'un fichier sous Linux, exécutez la commande suivante à partir d'un shell Linux :

openssl md5 -binary PATH/TO/FILE | base64

La valeur renvoyée sera similaire à la valeur suivante renvoyée lors de l'extraction du total de contrôle MD5 base64 du fichier /bin/bash :

user@example:/home$ openssl md5 -binary /bin/bash | base64
+e9lnJtCrdoKwYqg9wlFwA==

2. Importez l'objet dans Amazon S3.

Lancez l'interface de ligne de commande AWS et exécutez la commande s3api put-object AWS pour importer l'objet dans un compartiment S3. Pour vous assurer que S3 vérifie l'intégrité de l'objet et stocke le total de contrôle MD5 dans un en-tête HTTP personnalisé, vous devez utiliser les arguments --content-md5 et --metadata avec les paramètres appropriés.

Dans l'exemple suivant, la commande AWS s3api put-object permet d'importer le fichier local c:\S3\localfile.txt dans le compartiment S3 md5testbucket en tant que fichier fileupload.txt. Cette commande vérifie également l'intégrité du fichier avec le total de contrôle MD5 spécifié tout en enregistrant cette valeur dans l'en-tête HTTP personnalisé x-amz-meta-md5chksum.

C:\S3\>aws s3api put-object --bucket md5testbucket --key fileupload.txt --body localfile.txt --metadata md5chksum=WZOTosUmxoARnYQVXZDx5Q== --content-md5 WZOTosUmxoARnYQVXZDx5Q==
{
    "ETag": "\"599393a2c526c680119d84155d90f1e5\""
}

Remarque : si aucune valeur ETag est renvoyée, une erreur similaire à la suivante est renvoyée par l'interface de ligne de commande AWS :

Une erreur client (InvalidDigest) s'est produite lors de l'appel de l'opération PutObject : « The Content-MD5 you specified was invalid ».

Cette erreur indique un décalage entre le total de contrôle MD5 spécifié et l'objet que vous importez dans S3. L'intégrité de l'objet importé ne peut pas être vérifiée tant que ce décalage n'est pas corrigé.

Pour vérifier que l'objet a été importé et que le total de contrôle MD5 a été écrit dans l'en-tête HTTP personnalisé, exécutez la commande ci-dessous à partir de l'interface de ligne de commande AWS :

C:\S3>aws s3api head-object --bucket md5testbucket --key fileupload.txt
{
    "AcceptRanges": "bytes",
    "ContentType": "binary/octet-stream",
    "LastModified": "Thu, 31 Mar 2016 16:37:18 GMT",
    "ContentLength": 605,
    "ETag": "\"599393a2c526c680119d84155d90f1e5\"",
    "Metadata": {
        "md5chksum": "WZOTosUmxoARnYQVXZDx5Q=="
    }
}

La valeur renvoyée pour md5chksum doit correspondre à la valeur spécifiée lorsque vous avez importé le fichier dans S3. Elle permet de vérifier l'intégrité de l'objet lorsqu'il est téléchargé depuis S3.

Amazon S3, vérifier l'intégrité du fichier, importer, total de contrôle MD5, télécharger, ETag, aws s3api, put-object, head-object, métadonnées, interface de ligne de commande AWS


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 01/04/2016