このトピックでは、バージョン管理バケット内のオブジェクトを一覧表示する方法について説明します。 すべてのオブジェクト、指定された数のオブジェクト、および名前に指定されたプレフィックスが含まれるオブジェクトを一覧表示できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトを一覧表示するには、
oss:ListObjectVersions
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
バケット内の全オブジェクトのバージョン一覧表示
次のコードでは、指定したバケット内の削除マーカーを含むすべてのオブジェクトのバージョンを一覧表示する方法の例を示します。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')
# list_object_versions操作を呼び出して、バージョン管理が有効なバケット内のオブジェクトのバージョンを一覧表示します。
# バケット内の削除マーカーを含む、すべてのオブジェクトのバージョンを一覧表示します。
result = bucket.list_object_versions()
# バケット内のすべてのオブジェクトのバージョンを一覧表示します。
next_key_marker=なし
next_versionid_marker=なし
真の間:
result = bucket.list_object_versions(key_marker=next_key_marker, versionid_marker=next_versionid_marker)
# リストされたオブジェクトのバージョンを表示します。
for version_info in result.versions:
print('version_info.versionid:', version_info.versionid)
print('version_info.key:', version_info.key)
print('version_info.is_latest:', version_info.is_latest)
# リストされた削除マーカーのバージョンを表示します。
for del_maker_Info in result.delete_marker:
print('del_maker.key:', del_maker_Info.key)
print('del_maker.versionid:', del_maker_Info.versionid)
プリント ('del_maker.is_latest:', del_maker_Info.is_latest)
is_truncated = result.is_truncated
# バケット内のすべてのオブジェクトのすべてのバージョンが一覧表示されているかどうかを確認します。 すべてのオブジェクトのバージョンが完全にリストされていない場合、リスト操作が続行されます。 すべてのオブジェクトのバージョンが完全にリストされると、リスト操作は停止します。
is_truncatedの場合:
next_key_marker = result.next_key_marker
next_versionid_marker = result.next_versionid_marker
else:
休憩
指定されたプレフィックスを名前に含むオブジェクトのバージョンを一覧表示する
次のコードでは、名前に指定されたプレフィックスが含まれるオブジェクトのバージョンを一覧表示する方法の例を示します。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')
# list_object_versions操作を呼び出して、バージョン管理が有効なバケット内のオブジェクトのバージョンを一覧表示します。
# バケット内の削除マーカーを含む、すべてのオブジェクトのバージョンを一覧表示します。
result = bucket.list_object_versions()
# 名前にtest- prefixが含まれるオブジェクトのバージョンを一覧表示します。
prefix = 'test-'
next_key_marker=なし
next_versionid_marker=なし
真の間:
result = bucket.list_object_versions(prefix=prefix, key_marker=next_key_marker, versionid_marker=next_versionid_marker)
# リストされたオブジェクトのバージョンを表示します。
for version_info in result.versions:
print('version_info.versionid:', version_info.versionid)
print('version_info.key:', version_info.key)
print('version_info.is_latest:', version_info.is_latest)
# リストされた削除マーカーのバージョンを表示します。
for del_maker_Info in result.delete_marker:
print('del_maker.key:', del_maker_Info.key)
print('del_maker.versionid:', del_maker_Info.versionid)
プリント ('del_maker.is_latest:', del_maker_Info.is_latest)
is_truncated = result.is_truncated
# バケット内のすべてのオブジェクトのすべてのバージョンが一覧表示されているかどうかを確認します。 すべてのオブジェクトのバージョンが完全にリストされていない場合、リスト操作が続行されます。 すべてのオブジェクトのバージョンが完全にリストされると、リスト操作は停止します。
is_truncatedの場合:
next_key_marker = result.next_key_marker
next_versionid_marker = result.next_versionid_marker
else:
休憩
指定した数のオブジェクトのバージョンを一覧表示する
次のコードは、特定の数のオブジェクトのバージョンを一覧表示する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')
# list_object_versions操作を呼び出して、バージョン管理が有効なバケット内のオブジェクトのバージョンを一覧表示します。
# バケット内の削除マーカーを含む、すべてのオブジェクトのバージョンを一覧表示します。
result = bucket.list_object_versions()
# 最大200のオブジェクトバージョンを一覧表示します。
max_keys = 200
result = bucket.list_object_versions(max_keys=max_keys)
# リストされたオブジェクトのバージョンを表示します。
for version_info in result.versions:
print('version_info.versionid:', version_info.versionid)
print('version_info.key:', version_info.key)
print('version_info.is_latest:', version_info.is_latest)
# リストされた削除マーカーのバージョンを表示します。
for del_maker_Info in result.delete_marker:
print('del_maker.key:', del_maker_Info.key)
print('del_maker.versionid:', del_maker_Info.versionid)
プリント ('del_maker.is_latest:', del_maker_Info.is_latest)
# リストが切り捨てられているかどうかを確認します。
# バケット内のオブジェクトの数が200を超える場合、is_truncatedの値はTrueになります。これは、リストが切り捨てられていることを示します。 バケット内のオブジェクトの数が200未満の場合、is_truncatedの値はFalseになります。これは、リストが切り捨てられていないことを示します。
print('is truncated ', result.is_truncated)
ディレクトリによるオブジェクトの一覧表示
OSSはフラット構造を使用してオブジェクトを格納します。 ディレクトリは、名前がスラッシュ (/) で終わるゼロバイトのオブジェクトです。 ディレクトリをアップロードおよびダウンロードできます。 デフォルトでは、名前がスラッシュ (/) で終わるオブジェクトは、OSSコンソールにディレクトリとして表示されます。
ディレクトリごとにオブジェクトを一覧表示するには、リクエストに区切り文字とプレフィックスパラメーターを指定できます。
リクエストでプレフィックスをディレクトリ名に設定すると、プレフィックスを含む名前のオブジェクトとサブディレクトリが一覧表示されます。
リクエストでプレフィックスを指定し、区切り文字をスラッシュ (/) に設定すると、ディレクトリ内で指定されたプレフィックスで始まる名前のオブジェクトとサブディレクトリが一覧表示されます。 各サブディレクトリは、CommonPrefixesで単一の結果要素としてリストされます。 これらのサブディレクトリ内のオブジェクトおよびディレクトリはリストされません。
例: examplebucketという名前のバケットには、oss.jpg、fun/test.jpg、fun/movie/001.avi、およびfun/movie/007.txtのオブジェクトが含まれています。 スラッシュ (/) は、ディレクトリの区切り文字として使用されます。 次の構造は、examplebucketバケット内のオブジェクトとディレクトリを示しています。
examplebucket
└ ─ ─ oss.jpg
└ ─ ─ 楽しい
└ ─ ─ test.jpg
└ ─ ─ ムービー
└ ─ ─ 001.avi
└ ─ ─ 007.txt
次の例では、シミュレートされたディレクトリにオブジェクトを一覧表示します。
バケットのルートディレクトリ内のオブジェクトのバージョンを一覧表示する
次のコードは、バケットのルートディレクトリにあるオブジェクトのバージョンを一覧表示する方法の例を示しています。
# -*-コーディング: utf-8 -*- oss2のインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 # バケットの名前を指定します。 bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName') # list_object_versions操作を呼び出して、バージョン管理が有効なバケット内のオブジェクトのバージョンを一覧表示します。 # バケット内の削除マーカーを含む、すべてのオブジェクトのバージョンを一覧表示します。 result = bucket.list_object_versions() # 区切り文字としてスラッシュ (/) を指定します。 delimiter = "/" next_key_marker=なし next_versionid_marker=なし 真の間: result = bucket.list_object_versions(delimiter=delimiter, key_marker=next_key_marker, versionid_marker=next_versionid_marker) # リストされたオブジェクトのバージョンを表示します。 for version_info in result.versions: print('version_info.versionid:', version_info.versionid) print('version_info.key:', version_info.key) print('version_info.is_latest:', version_info.is_latest) # リストされた削除マーカーのバージョンを表示します。 for del_maker_Info in result.delete_marker: print('del_maker.key:', del_maker_Info.key) print('del_maker.versionid:', del_maker_Info.versionid) プリント ('del_maker.is_latest:', del_maker_Info.is_latest) # 名前がスラッシュ (/) で終わるディレクトリを表示します。 common_prefixのi n result.com mon_prefix: print("common_prefix:", common_prefix) is_truncated = result.is_truncated # バケット内のすべてのオブジェクトのすべてのバージョンが一覧表示されているかどうかを確認します。 すべてのオブジェクトのバージョンが完全にリストされていない場合、リスト操作が続行されます。 すべてのオブジェクトのバージョンが完全にリストされると、リスト操作は停止します。 is_truncatedの場合: next_key_marker = result.next_key_marker next_versionid_marker = result.next_versionid_marker else: 休憩
結果
('version_info.versionid:', 'CAEQEhiBgMCw8Y7FqBciIGIzMDE3MTEzOWRiMDRmZmFhMmRlMjljZWI0MWU4 ****') ('version_info.key:', 'oss.jpg') ('version_info.is_latest:'、True) ('common_prefix:', 'fun/')
指定したディレクトリ内のオブジェクトとサブディレクトリを一覧表示する
次のコードは、バケットのディレクトリ内のオブジェクトとサブディレクトリを一覧表示する方法の例を示しています。
# -*-コーディング: utf-8 -*- oss2のインポート oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 # バケットの名前を指定します。 bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName') # list_object_versions操作を呼び出して、バージョン管理が有効なバケット内のオブジェクトのバージョンを一覧表示します。 # バケット内の削除マーカーを含むすべてのオブジェクトのバージョンを一覧表示します。 result = bucket.list_object_versions() # 区切り文字をスラッシュ (/) に設定し、プレフィックスをfun /に設定します。 prefix = "fun/" delimiter = "/" next_key_marker=なし next_versionid_marker=なし 真の間: result = bucket.list_object_versions(prefix=prefix, delimiter=delimiter, key_marker=next_key_marker, versionid_marker=next_versionid_marker) # リストされたオブジェクトのバージョンを表示します。 for version_info in result.versions: print('version_info.versionid:', version_info.versionid) print('version_info.key:', version_info.key) print('version_info.is_latest:', version_info.is_latest) # リストされた削除マーカーのバージョンを表示します。 for del_maker_Info in result.delete_marker: print('del_maker.key:', del_maker_Info.key) print('del_maker.versionid:', del_maker_Info.versionid) プリント ('del_maker.is_latest:', del_maker_Info.is_latest) # 名前がスラッシュ (/) で終わるディレクトリを表示します。 common_prefixのi n result.com mon_prefix: print("common_prefix:", common_prefix) is_truncated = result.is_truncated # バケット内のすべてのオブジェクトのすべてのバージョンが一覧表示されているかどうかを確認します。 すべてのオブジェクトのバージョンが完全にリストされていない場合、リスト操作が続行されます。 すべてのオブジェクトのバージョンが完全にリストされると、リスト操作は停止します。 is_truncatedの場合: next_key_marker = result.next_key_marker next_versionid_marker = result.next_versionid_marker else: 休憩
結果
('version_info.versionid:', 'CAEQFRiBgMCh9JDkrxciIGE3OTNkYzFhYTc2YzQzOTQ4Y2MzYjg2YjQ4ODg *****') ('version_info.key:', 'fun/test.jpg') ('version_info.is_latest:'、True) ('commonPrefix:'、'fun/movie/')
参考資料
オブジェクトを一覧表示するために呼び出すAPI操作の詳細については、「ListObjectVersions (GetBucketVersions) 」をご参照ください。