このトピックでは、Object Storage Service (OSS) SDK for Python を使用してバケット内のすべてのオブジェクトを一覧表示する方法について説明します。
使用上の注意
このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID
cn-hangzhouを使用しています。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。オブジェクトを一覧表示するには、
oss:ListObjects権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
サンプルコード
次のサンプルコードは、ListObjectsV2 オペレーションを呼び出してバケット内のすべてのオブジェクトを一覧表示する例を示しています。
import argparse
import alibabacloud_oss_v2 as oss
# コマンドラインパラメータパーサーを作成します。
parser = argparse.ArgumentParser(description="list objects v2 sample")
# --region パラメータを指定します。これは、バケットが配置されているリージョンを指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメータを指定します。これは、バケットの名前を指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメータを指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このコマンドラインパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
args = parser.parse_args() # コマンドラインパラメータを解析します。
# 認証のために環境変数からアクセス認証情報を取得します。
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# SDK のデフォルト設定を読み込み、認証情報プロバイダーを指定します。
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# 設定のリージョンをコマンドラインで指定されたリージョンに設定します。
cfg.region = args.region
# endpoint パラメータが指定されている場合は、エンドポイントを指定します。
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# 設定を使用して OSSClient インスタンスを作成します。
client = oss.Client(cfg)
# ListObjectsV2 オペレーションでオブジェクトを一覧表示できるようにページネータを作成します。
paginator = client.list_objects_v2_paginator()
# 一覧表示されたオブジェクトの各ページをトラバースします。
for page in paginator.iter_page(oss.ListObjectsV2Request(
bucket=args.bucket
)
):
# 各ページの各オブジェクトをトラバースします。
for o in page.contents:
# オブジェクトの名前、サイズ、最終更新時刻を表示します。
print(f'Object: {o.key}, {o.size}, {o.last_modified}')
if __name__ == "__main__":
main() # スクリプトが直接実行されたときに、スクリプトのメイン関数にエントリポイントを指定します。一般的なシナリオ
特定のディレクトリ内のすべてのオブジェクトを一覧表示する
名前が特定のプレフィックスを含むオブジェクトを一覧表示する
特定の数のオブジェクトを一覧表示する
特定の位置からすべてのオブジェクトを一覧表示する
関連情報
オブジェクトを一覧表示するために使用される完全なサンプルコードについては、list_objects_v2.py にアクセスしてください。