バージョンがオンの s3 バケットと、多数のバージョンのキーがあります。バケットにある特定のキーのバージョンの数を効率的に見つける方法があるかどうか疑問に思っていました。
これが私が知っている唯一の方法です
version_count = list(bucket.list_versions().__iter__())
この情報はどこかにありますか?
バージョンを削除することでこの情報を取得できれば非常によいのですが、検索しても何も見つかりませんでした。
バージョンがオンの s3 バケットと、多数のバージョンのキーがあります。バケットにある特定のキーのバージョンの数を効率的に見つける方法があるかどうか疑問に思っていました。
これが私が知っている唯一の方法です
version_count = list(bucket.list_versions().__iter__())
この情報はどこかにありますか?
バージョンを削除することでこの情報を取得できれば非常によいのですが、検索しても何も見つかりませんでした。
オブジェクトのすべてのバージョンを見つける唯一の方法は、バージョンを一覧表示することです。ただし、返されるオブジェクトのリストには、カウントされるべきではない DeleteMarkers も含まれている可能性があるため、バージョンをリストするときは注意が必要です。
これが機能することがわかりました:
import boto
from boto.s3.key import Key
c = boto.connect_s3()
bucket = c.lookup('mybucket')
versions = [v for v in bucket.list_versions('myversionedobject') if isinstance(v, Key)]
変数versions
には実際のバージョンのリストが含まれるようになり、明らかに、len()
そのリストに対して を実行すると、バージョンの数がわかります。それを行う簡単な方法がある場合、私はそれを認識していません。