使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何检查已上传到 Amazon S3 的对象的完整性?

1 分钟阅读
0

我想将对象上传到 Amazon Simple Storage Service (Amazon S3) 存储桶。此外,我想验证已上传对象的完整性。

简短描述

按照以下步骤使用 Content-MD5 标头验证已上传对象的完整性。

**注意:**当您使用 Content-MD5 标头时,Amazon S3 会根据提供的 Content-MD5 值检查对象。如果值不匹配,则会收到错误。

解决方法

计算对象的 Content-MD5 值

Windows 操作系统

如果您使用的是 Windows 操作系统,您可以使用 Microsoft PowerShell Utility 中的 Get-FileHash cmdlet 来计算 MD5 摘要,如下所示:

Get-FileHash \path\to\file -algorithm MD5 | Format-List

**注意:**Get-FileHash cmdlet 在 Microsoft PowerShell Utility 版本 4.0 及更高版本中可用。

下面是示例输出:

Algorithm : MD5
Hash      : C9A5A6878D97B48CC965C1E41859F034
Path      : \path\to\file

然后,对计算出的 MD5 摘要应用 base64 编码,以获得所需的 Content-MD5 值:

$hashString ='C9A5A6878D97B48CC965C1E41859F034'
$hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')
$ContentMD5 = [System.Convert]::ToBase64String($hashByteArray)
Echo $ContentMD5
yaWmh42XtIzJZcHkGFnwNA==

在此示例中,Echo $ContentMD5 的输出(“yaWmh42XtIzJZcHkGFnwNA==”)是所需的 Content-MD5 值。

Linux 操作系统

如果您使用的是 Linux 操作系统,请运行以下 OpenSSL 命令以获取文件的 Content-MD5 值:

openssl md5 -binary PATH/TO/FILE | base64

验证已上传对象的完整性

当您使用 PutObject 将对象上传到 Amazon S3 时,请将 Content-MD5 值作为请求标头传递。Amazon S3 根据提供的 Content-MD5 值检查对象。如果值不匹配,则会收到错误。

Content-MD5 请求标头也可以与 S3 UploadPart API 配合使用。

相关信息

常用请求标头

S3 错误响应

AWS 官方
AWS 官方已更新 2 个月前