如何檢查上傳到 Amazon S3 的物件的完整性?

1 分的閱讀內容
0

我想將物件上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。另外,我想驗證上傳物件的完整性。我該如何操作?

簡短說明

請依照下列步驟使用 Content-MD5 標頭來驗證上傳物件的完整性:

**注意事項:**當您使用 Content-MD5 標頭時,Amazon S3 會根據提供的 Content-MD5 值檢查物件。如果這些值不相符,就會收到錯誤訊息。

1.    計算物件的 Content-MD5 值。

2.    在上傳物件期間,透過將 Content-MD5 值作為請求標頭傳遞來驗證上傳物件的完整性。

解決方法

計算物件的 Content-MD5 值

Windows 作業系統

如果您使用的是 Windows 作業系統,則可以使用 Microsoft PowerShell 公用程式中的 Get-FileHash Cmdlet 來計算 MD5 摘要,如下所示:

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

**注意事項:**Get-FileHash Cmdlet 可用於 Microsoft PowerShell 公用程式 4.0 版及更新版本。

以下是輸出範例:

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

然後,將 base64 編碼套用到計算出的 MD5 摘要以取得所需的 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 年前