6

しばらく S3 バケットを使用していましたが、バージョニングをオンにしたのは今だけです。「MFA削除」オプションを有効にせずに、バージョン管理だけでどのような検出保護が得られるかを理解しようとして、少し試してみました。

テスト ファイルをアップロードしてから削除し、2 回再アップロードしました。現在、S3 ブラウザー ツールを使用すると、ファイルの 4 つのバージョンが表示されます: #1、#2 (削除)、#3、および #4 (現在)。boto最新バージョンを取得するために使用する場合、そのファイルを抽出できversion_idます。

import boto
c=boto.connect_s3()
b=c.get_bucket('my-bucket')
k = b.get_key('test2/dw.txt')
print k.version_id

しかし、特定のキーの version_id の完全なリストを取得するにはどうすればよいですか? また、キーのバージョン #1 (削除済み) を取得したい場合、最初にバージョン #2 の ID を使用して「削除を取り消す」必要がありますか?

最後に、この削除保護 (削除マーカーの作成) は、バージョン管理がオンになる前にアップロードされたレガシー ファイルで機能しますか?

どうも

4

3 に答える 3

6

list_versionsバケット オブジェクトのメソッドを使用して、使用可能なすべてのバージョンのリストを取得できます。

import boto
c = boto.connect_s3()
bucket = c.get_bucket('my-bucket')
for version in bucket.list_versions():
    print(version)

Keyこれにより、特定のオブジェクトがversion_ids関連付けられているオブジェクトのリストが返されます。どのバージョンも取得できますが、Keyオブジェクトに対して通常の方法を使用します。古いバージョンを現在のバージョンにしたい場合は、サーバーに再アップロードするかコピーする必要があります。

バケットでバージョニングを有効にすると、その時点以降のバケット内のオブジェクトに対するすべての削除操作により、オブジェクトが実際に削除されるのではなく、削除マーカーがバケットに書き込まれます。

于 2015-01-30T19:49:24.857 に答える