Comment vérifier l'intégrité d'un objet chargé sur Amazon S3 ?

Dernière mise à jour : 05/01/2021

Je souhaite charger un objet dans un compartiment Amazon Simple Storage Service (Amazon S3). Je souhaite aussi vérifier l'intégrité de cet objet. Comment procéder ?

Brève description

Procédez comme suit pour vérifier l'intégrité de l'objet chargé à l'aide de la valeur du total de contrôle MD5 :

Remarque : la balise d'entité (ETag) est un hachage de l'objet qui peut ne pas être un hachage MD5 des données de l'objet. L'ETag peut être un hachage MD5 ou non selon la façon dont l'objet a été créé et chiffré. ETag n'étant pas toujours un hachage MD5, il ne peut pas toujours être utilisé pour vérifier l'intégrité des fichiers chargés.

1.    Obtenez la valeur du total de contrôle MD5 codé en base64 de l'objet.

2.    Vérifiez l'intégrité de l'objet pendant le chargement.

Solution

Obtention de la valeur du total de contrôle MD5 codé en base 64 de l'objet

Si vous utilisez un système d'exploitation Windows, procédez comme suit :

1.    Installez l'utilitaire FCIV (File Checksum Integrity Verifier).

2.    Exécutez l'utilitaire FCIV avec la commande suivante :

fciv.exe c:\S3\testfile

3.    La réponse contient le format hexadécimal de la valeur du total de contrôle, comme suit :

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

4.    Convertissez la valeur du total de contrôle MD5 hexadécimal dans son format codé en base64. Pour plus d'informations sur la manière d'obtenir le format codé en base64, consultez Database storage format avec l'utilitaire FCIV.

Si vous utilisez un système d'exploitation Linux, exécutez cette commande Open SSL :

openssl md5 -binary PATH/TO/FILE | base64

La réponse contient la valeur du total de contrôle MD5 codée en base 64, comme suit :

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

Vérification de l'intégrité de l'objet pendant le chargement

Pour vérifier la valeur du total de contrôle MD5 de l'objet lors de son chargement sur Amazon S3, utilisez la commande aws s3api put-object :

aws s3api put-object --bucket awsexamplebucket --key awsexampleobject.txt --body awsexampleobjectpath --content-md5 examplemd5value1234567==

Veillez à inclure l'option --content-md5 et entrez la valeur du total de contrôle MD5 codée en base 64 que vous avez calculée.

Si vous souhaitez stocker la valeur du total de contrôle MD5 en tant que métadonnée (en-tête HTTP personnalisé), vous pouvez également utiliser l'option --metadata, comme suit :

aws s3api put-object --bucket awsexamplebucket --key awsexampleobject.txt --body awsexampleobjectpath --content-md5 examplemd5value1234567== --metadata md5checksum=examplemd5value1234567==

Si le total de contrôle calculé par Amazon S3 lors du chargement ne correspond pas à la valeur que vous avez entrée pour --content-md5, S3 ne stocke pas l'objet. En revanche, vous recevez un message d'erreur en réponse. Pour plus d'informations, consultez L’interface de ligne de commande CLI (AWS) valide-t-elle les totaux de contrôle ?

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande (CLI AWS), veillez à utiliser la version la plus récente de l’interface.