Je souhaite charger un objet dans un compartiment Amazon Simple Storage Service (Amazon S3). En outre, je souhaite vérifier l'intégrité de l'objet chargé.
Résolution
Pour les compartiments à usage général, utilisez l'en-tête Content-MD5 pour vérifier l'intégrité des objets chargés. Pour les compartiments de répertoires, utilisez un algorithme de somme de contrôle pris en charge pour vérifier l'intégrité des objets chargés.
Remarque : Amazon S3 ne prend pas en charge les contrôles d'intégrité avec Content-MD5 lorsque vous utilisez l'opération PutObject sur des compartiments de répertoires. Amazon S3 ne prend pas non plus en charge les contrôles d'intégrité pour les compartiments de vecteur ou de table.
Compartiments à usage général
Pour les compartiments à usage général, calculez la valeur Content-MD5 de l'objet.
Remarque : lorsque vous utilisez l'en-tête Content-MD5, Amazon S3 compare l'objet à la valeur Content-MD5 fournie. Si les valeurs ne correspondent pas, vous recevez un message d'erreur.
Système d'exploitation (OS) Windows
Si vous utilisez un système d’exploitation Windows, vous pouvez utiliser l’applet de commande Get-FileHash de Microsoft PowerShell Utility pour calculer un condensat MD5.
-
La commande suivante permet d'obtenir un condensat MD5 :
Get-FileHash \path\to\file -algorithm MD5 | Format-List
Remarque : remplacez \path\to\file par le chemin d'accès à votre objet.
Remarque : l’applet de commande Get-FileHash est disponible avec Microsoft PowerShell Utility version 4.0 et versions ultérieures.
Voici un exemple de sortie :
Algorithm : MD5Hash : C9A5A6878D97B48CC965C1E41859F034
Path : \path\to\file
-
Puis, appliquez le codage base64 à la valeur de hachage MD5 calculée pour obtenir la valeur Content-MD5 requise :
hashString ='C9A5A6878D97B48CC965C1E41859F034'$hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')
ContentMD5 = [System.Convert]::ToBase64String($hashByteArray)
Echo ContentMD5
yaWmh42XtIzJZcHkGFnwNA==
Dans cet exemple, la sortie de Echo $ContentMD5, ("yaWmh42XtIzJZcHkGFnwNA=="), est la valeur Content-MD5 requise.
Système d’exploitation Linux (OS)
Si vous utilisez un système d'exploitation Linux, exécutez la commande OpenSSL suivante pour obtenir la valeur Content-MD5 de votre fichier :
openssl md5 -binary path/to/file | base64
Remarque : remplacez path/to/file par le chemin d'accès à votre objet.
Compartiments de répertoires
Vérifiez l'intégrité des objets chargés dans des compartiments de répertoires à l'aide d'un algorithme de somme de contrôle pris en charge autre que MD5. Par exemple, procédez comme suit pour vérifier l'intégrité des objets chargés à l'aide de l'en-tête x-amz-checksum-sha256 (SHA256).
Remarque : lorsque vous utilisez l'en-tête x-amz-checksum-sha256, Amazon S3 compare l'objet à la valeur x-amz-checksum-sha256 fournie. Si les valeurs ne correspondent pas, vous recevez un message d'erreur.
Système d’exploitation Windows
Si vous utilisez un système d'exploitation Windows, vous pouvez utiliser l'applet de commande Get-FileHash de Microsoft PowerShell Utility pour calculer un condensat SHA256.
-
La commande suivante permet d'obtenir un condensat SHA256 :
Get-FileHash \path\to\file -algorithm SHA256 | Format-List
Remarque : remplacez \path\to\file par le chemin d'accès à votre objet.
Voici un exemple de sortie :
Algorithm : SHA256
Hash : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855
Path : \path\to\file
-
Appliquez le codage base64 au condensat SHA256 calculé pour obtenir la valeur SHA256 requise :
hashString ='E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855'
hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')
ContentSHA256 = [System.Convert]::ToBase64String($hashByteArray)
Echo ContentSHA256
`47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=`
Dans cet exemple, la sortie de Echo ContentSHA256, 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=, est la valeur SHA256 requise.
Système d’exploitation Linux
Si vous utilisez un système d'exploitation Linux, exécutez la commande OpenSSL suivante pour obtenir la valeur SHA256 de votre fichier :
openssl sha256 -binary path/to/file | base64
Remarque : remplacez path/to/file par le chemin d'accès à votre objet.
Vérifier l'intégrité de l'objet chargé
Lorsque vous utilisez PutObject pour charger des objets vers Amazon S3, transmettez la valeur Content-MD5 en tant qu'en-tête de requête pour les compartiments à usage général.
Pour les compartiments de répertoires, transmettez une valeur x-amz-checksum-sha256 et un en-tête x-amz-checksum-algorithm défini sur SHA256 en tant qu’en-têtes de requête. Amazon S3 compare l'objet à la valeur Content-MD5/SHA256 fournie. Si les valeurs ne correspondent pas, vous recevez un message d'erreur. Vous pouvez également utiliser l'en-tête de requête SHA256 avec l'API UploadPart d’Amazon S3.
Informations connexes
En-têtes de requête courants
Réponses d’erreur d'Amazon S3