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 OS

Windows オペレーティングシステムを使用している場合は、次のように Microsoft PowerShell UtilityGet-FileHash コマンドレットを使用して MD5 ダイジェストを計算できます。

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

注: Get-FileHash コマンドレットは、Microsoft PowerShell ユーティリティのバージョン 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 OS

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年前