オブジェクトを Amazon Simple Storage Service (Amazon S3) バケットにアップロードしたいと考えています。また、MD5 チェックサム値を使用して、アップロードするオブジェクトの整合性を検証したいと思います。その方法を教えてください。

重要: ここでは、Content-MD5 ヘッダーを使用してオブジェクトの整合性を検証します。アップロードを AWS 署名バージョン 4 で署名した場合は、代わりに x-amz-content-sha256 ヘッダーを使用する必要があります。詳細については、AWS CLI はチェックサムの検証を行いますか? を参照してください。

オブジェクトの base64 エンコードされた MD5 チェックサム値を取得する

Windows オペレーティングシステムを使用している場合は、次の手順に従います。

1.    ファイル チェックサム整合性検証ツール (FCIV) ユーティリティをインストールします。

2.    次のコマンドを使用して FCIV ユーティリティを実行します。

fciv.exe c:\S3\testfile

3.    レスポンスには、以下のような 16 進形式のチェックサム値が含まれます。

fciv C:\Windows\explorer.exe
                //
                // File Checksum Integrity Verifier version 2.05.
                //
                example111aaa222bbb33cc44dd5e6f7 c:\\windows\\explorer.exe

4.    16 進数の MD5 チェックサム値を base64 エンコード形式に変換します。base64 エンコード形式の値を取得するための 1 つのオプションについては、FCIV ユーティリティのサポートページのデータベースのストレージ形式を参照してください。

Linux オペレーティングシステムを使用している場合は、次の OpenSSL コマンドを使用します。

openssl md5 -binary PATH/TO/FILE | base64

レスポンスには、以下のような base64 エンコードされた MD5 チェックサム値が含まれます。

user@example:/home$ openssl md5 -binary /bin/bash | base64
                examplemd5value1234567==

アップロード時にオブジェクトの整合性を検証する

Amazon S3 へのアップロード時にオブジェクトの MD5 チェックサム値を検証するには、AWS コマンドラインインターフェイス (AWS CLI) コマンド aws s3api put-object を使用して、--content-md5 オプションを指定します。--content-md5 の値には、以下のような、計算した base64 エンコードされた MD5 チェックサム値を入力します。

aws s3api put-object --bucket examplebucket --key exampleobject.txt --body exampleobjectpath --content-md5 examplemd5value1234567==

必要に応じて、MD5 チェックサム値をメタデータ (カスタム HTTP ヘッダー) として保存する場合は、コマンドに次のように --metadata オプションを追加することもできます。

aws s3api put-object --bucket examplebucket --key exampleobject.txt --body exampleobjectpath --content-md5 examplemd5value1234567== --metadata md5checksum=examplemd5value1234567==

アップロード時に Amazon S3 が計算したチェックサムが --content-md5 で入力した値と一致しない場合、Amazon S3 はそのオブジェクトを保存しません。代わりに、レスポンスとしてエラーメッセージが返されます。詳細については、AWS CLI はチェックサムの検証を行いますか? を参照してください。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2016 年 04 月 01 日

更新日: 2018 年 12 月 19 日