2016-11-17 9 views
0

私はboto3バケットの中にファイルをアップロードするための呼び出しを書いています。 ファイル名、バケットを渡す必要があります。 ファイルをバケットにアップロードします。 しかし、バケットにアップロードされた各ファイルのバージョンを追加しようとしています。だから、私はバケツのバージョニングを可能にしました。そのバケツにアップロードしたファイルのバージョンを私に渡しました。boto3バージョンとファイルに変更が加えられた場合に追加する追加のファイル

その後
bucketFile = s3.meta.client.upload_file(filename, str(bucket),filename) 

私がアップロードされ、そのファイルのオブジェクトバージョンを取得するには、私は

objectSummary = s3.ObjectSummary(bucket,filename) 
object = objectSummary.get() 
versionID = object.get('VersionId') 

次の操作を行い、次のコードは、私がそのバケットにアップロードするすべてのファイルのバージョンIDを提供します。 だから私は何をしようとしていることは ある--->ファイルのバージョンを取得 ---->私にとっては困難な部分があることであるが、この

versionsAdd = versions(version_url=versionID, filename=filename) 

のように私のローカルデータベースにそのバージョンを追加ファイルの内容が同じであれば、そのバージョンを追加したくありません。 boto3は、ファイルの内容にかかわらず私にversionIDを与えます。だから私のために、私はファイルを読んで、私のバケツ内の私の既存のファイルとそれを比較できるようにしたい。ファイルに変更が加えられた場合は、ローカルデータベースの私のバージョンの下に追加するだけです。バケツにアップロードされたファイルがまだ同じ内容の場合 - >それをスキップしてローカルデータベースに追加しないでください。

答えて

1

Amazon S3のオブジェクトに関連付けられたETagを使用して、オブジェクトを比較し、それらが同一かどうかを判断できます。これは、オブジェクトの内容のMD5チェックサムです。

新しいバージョンの以前のバージョンと同じETagがある場合は、そのバージョンをスキップしてください。

+0

ああ!同じファイルには同じETAGが与えられていますか? – Dilli

+0

はい。 ETagは、コンテンツのMD5チェックサムです。 –

+0

ライフセーバー!どうもありがとうございます! – Dilli

関連する問題