如何檢查上傳到 Amazon S3 之物件的完整性?
我想將物件上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。另外,我想驗證上傳物件的完整性。
解決方法
對於一般用途儲存貯體,請使用 Content-MD5 標頭來檢查已上傳物件的完整性。對於目錄儲存貯體,請使用支援的總和檢查演算法來檢查已上傳物件的完整性。
注意: 當您對目錄儲存貯體使用 PutObject 作業時,Amazon S3 不支援使用 Content-MD5 進行完整性檢查。Amazon S3 也不支援向量或資料表儲存貯體的完整性檢查。
一般用途儲存貯體
對於一般用途儲存貯體,請計算物件的 Content-MD5 值。
**注意:**當您使用 Content-MD5 標頭時,Amazon S3 會根據提供的 Content-MD5 值檢查物件。如果值不相符,您會收到錯誤。
Windows 作業系統 (OS)
如果您使用 Windows 作業系統,可以使用 Microsoft PowerShell Utility 中的 Get-FileHash Cmdlet 來計算 MD5 摘要。
-
以下命令會取得 MD5 摘要:
Get-FileHash \path\to\file -algorithm MD5 | Format-List注意: 將 \path\to\file 替換為您物件的路徑。
**注意:**Get-FileHash Cmdlet 可用於 Microsoft PowerShell Utility 4.0 及更新版本。
以下是範例輸出:
Algorithm : MD5Hash : C9A5A6878D97B48CC965C1E41859F034 Path : \path\to\file -
對計算出的 MD5Hash 值套用 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 作業系統 (OS)
如果您使用 Linux 作業系統,請執行以下 OpenSSL 命令以取得檔案的 Content-MD5 值:
openssl md5 -binary path/to/file | base64
注意: 將 path/to/file 替換為您物件的路徑。
目錄儲存貯體
使用 MD5 以外的支援總和檢查演算法,驗證目錄儲存貯體中已上傳物件的完整性。例如,使用以下步驟搭配 x-amz-checksum-sha256 標頭 (SHA256) 驗證已上傳物件的完整性。
**注意:**當您使用 x-amz-checksum-sha256 標頭時,Amazon S3 會根據提供的 x-amz-checksum-sha256 值檢查物件。如果值不相符,您會收到錯誤。
Windows OS
如果您使用 Windows 作業系統,可以使用 Microsoft PowerShell Utility 中的 Get-FileHash Cmdlet 來計算 SHA256 摘要。
-
以下命令會取得 SHA256 摘要:
Get-FileHash \path\to\file -algorithm SHA256 | Format-List注意: 將 \path\to\file 替換為您物件的路徑。
以下是範例輸出:
Algorithm : SHA256 Hash : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 Path : \path\to\file -
對計算出的 SHA256 摘要套用 base64 編碼,以取得所需的 SHA256 值:
hashString ='E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855' hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '') ContentSHA256 = [System.Convert]::ToBase64String($hashByteArray) Echo ContentSHA256 `47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=`在此範例中,Echo ContentSHA256 的輸出 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=,即為所需的 SHA256 值。
Linux OS
如果您使用 Linux 作業系統,請執行以下 OpenSSL 命令以取得檔案的 SHA256 值:
openssl sha256 -binary path/to/file | base64
注意: 將 path/to/file 替換為您物件的路徑。
驗證已上傳物件的完整性
當您使用 PutObject 將物件上傳到 Amazon S3 時,請將 Content-MD5 值作為一般用途儲存貯體的請求標頭傳遞。
對於目錄儲存貯體,請將 x-amz-checksum-sha256 值,以及設為 SHA256 的 x-amz-checksum-algorithm 標頭作為請求標頭傳遞。Amazon S3 會根據提供的 Content-MD5/SHA256 值檢查物件。如果值不相符,您會收到錯誤。您也可以將 SHA256 請求標頭搭配 Amazon S3 的 UploadPart API 使用。
相關資訊
相關內容
已提問 1 年前
已提問 2 年前
已提問 3 年前
已提問 4 年前
