2017-03-28 19 views
0

ファイルの事前計算されたmd5チェックサムをパラメータ[Boto3]として渡したいので、s3は自身の計算されたmd5/etagをチェックし、md5が一致しなければ破棄します。 (私はマルチパートエタグがmd5ではないことを知っています)。 (s3transfer)transfer.upload_file()でそれを行う方法はありますか? これを行う方法は他にありますか?正しい方向に私を指差してください。 ありがとうございますが、メタデータのみにMD5を保存し、検証としてMD5を使用するように、hereを説明するように、検証として使用することができますtransfer.upload_file()を使用してmd5チェックサムをパラメータとして渡す方法は?

+0

ソースコードを確認しましたか?私は 'upload_file()'がファイルをアップロードしている間に自動的にこれを行うことを願っています。マルチパートアップロードを実行すると、各パートのリクエストでContent-MD5が送信されます。比較の際にS3が送信する各パートのmd5で、各パートを受け入れるか拒否するかを決定します。部品レベルを再試行することができます)。最終的なオブジェクトのエタグは、アップロードされた各パートの連結バイナリmd5の16進数md5です(「 - 」とパーツの数)。 S3が考えるオブジェクト全体の生のmd5はありません。 –

+0

Umm、私は小さなファイルを送信しているとします(私はそれがあらかじめわかっていないからです)..... botoで計算されたmd5を確認する方法はありません電子タグと同じですか?私は自分でmd5をあらかじめ計算しておきたいと思っています。そしてそれをs3で計算された電子タグと比較して検証します。 しかし、どこでBotoがmd5を計算しているのかわかりません。 私はmd5 Botoが何を計算しているのか見たいと思っていました。 (当分はマルチパートを忘れよう)。それを知る方法はありますか? –

答えて

0

、それはput_object

s3 tranferを使用してのみ可能であるあなたは、メタデータを保存することができますが、検証能力なし。

transfer.upload_file('/tmp/myfile', 'bucket', 'key', 
        extra_args={'Metadata': {'a': 'b', 'c': 'd'}}) 
+0

意味はありますが、put_objectは複数の部分からなるアップロードを処理しないため、s3Transferが必要です。そして、s3Transferはファイルの整合性をチェックするのに本当に役立たない...それはまた私の必要条件だった。私はメタデータとして[1]それを渡し[2]、e-タグとメタデータを取得し[3]、それらが一致しない場合は[4]を比較して、そのオブジェクトを削除する必要があります。 –

+0

@RishavSrestha:他にも同様の要件があると思います。適切なマルチパートアップロードを確認するには、データ検証チェックサムが常に存在している必要があります。おそらく、S3オブジェクトのメタデータを変更するAPIを使用する必要があります。 – mootmoot

関連する問題