このトピックでは、現在のアカウント内のすべてのリージョンで、指定された条件を満たすバケットを一覧表示する方法について説明します。
注意事項
このトピックのサンプルコードでは、中国 (杭州) リージョン ID
cn-hangzhouを使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用する必要があります。OSS のリージョンとエンドポイント間のマッピングの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。このトピックの例では、環境変数を使用してアクセス資格情報を読み取ります。アクセス資格情報を設定する方法の詳細については、「アクセス資格情報を設定する」をご参照ください。
バケットを一覧表示するには、
oss:ListBuckets権限が必要です。詳細については、「RAM ユーザーにカスタム権限を付与する」をご参照ください。SDK を使用してバケットを一覧表示する場合、リソースグループ ID を指定して、特定のリソースグループ内のバケットをフィルターできます。
デフォルトでは、リソースグループ ID パラメーターはバケットを一覧表示するリクエストに含まれません。したがって、XML の結果にはリソースグループ情報は含まれません。
リクエストにリソースグループ ID パラメーターが含まれている場合、OSS はそのリソースグループに属するすべてのバケットを返します。
リクエストにリソースグループ ID パラメーターが含まれていない場合、OSS はリクエスターが所有するすべてのバケットを返します。
サンプルコード
次のコードを使用して、現在のアカウント内のすべてのリージョンにあるすべてのバケットを一覧表示できます。
import argparse
import alibabacloud_oss_v2 as oss
# コマンドライン引数パーサーを作成し、スクリプトの目的を記述します: このサンプルは、OSS のすべてのバケットを一覧表示する方法を示します。
parser = argparse.ArgumentParser(description="list buckets sample")
# バケットが配置されているリージョンを指定する --region コマンドライン引数を追加します。これは必須パラメーターです。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# 他のサービスが OSS へのアクセスに使用できるドメイン名を指定する --endpoint コマンドライン引数を追加します。これはオプションのパラメーターです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
# コマンドラインで提供されたパラメーターを解析して、ユーザーが入力した値を取得します。
args = parser.parse_args()
# ID 検証のために、環境変数から OSS へのアクセスに必要な認証情報を読み込みます。
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# SDK のデフォルト設定を使用して設定オブジェクトを作成し、認証プロバイダーを設定します。
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
# カスタムエンドポイントが提供されている場合は、設定オブジェクトのエンドポイントプロパティを更新します。
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# 前述の設定を使用して OSS クライアントを初期化し、OSS との対話の準備をします。
client = oss.Client(cfg)
# 多数のバケットを処理するために、ListBuckets 操作用のページネーターを作成します。
paginator = client.list_buckets_paginator()
# ページ分割された結果を走査します。
for page in paginator.iter_page(oss.ListBucketsRequest()):
# 各ページの各バケットについて、その名前、場所、作成日を出力します。
for o in page.buckets:
print(f'Bucket: {o.name}, Location: {o.location}, Created: {o.creation_date}')
# このスクリプトが直接実行されるときに、main 関数を呼び出して処理ロジックを開始します。
if __name__ == "__main__":
main() # スクリプトのエントリポイントで、ここからプログラムフローが開始されます。シナリオ
関連情報
バケットを一覧表示するための完全なサンプルコードについては、「list_buckets.py」をご参照ください。