このトピックでは、すべてのリージョンにある現在の Alibaba Cloud アカウントに属し、特定の条件を満たすバケットを一覧表示する方法について説明します。
使用上の注意
このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID
cn-hangzhou
を使用しています。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用します。Object Storage Service (OSS) のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。バケットを一覧表示するには、
oss:ListBuckets
権限が必要です。詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。
例
次のサンプルコードは、現在の Alibaba Cloud アカウント内のすべてのリージョンにあるバケットを一覧表示する方法の例を示しています。
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)
# コマンドラインパラメータ --endpoint を指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
# コマンドラインで提供されたパラメータを解析して、ユーザーが入力した値を取得します。
args = parser.parse_args()
# 環境変数から OSS にアクセスするために必要な認証情報をロードします。
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 インスタンスを初期化し、インスタンスが OSS と対話できるようにします。
client = oss.Client(cfg)
# ListBuckets 操作で多数のバケットを一覧表示できるようにするために、ページネータを作成します。
paginator = client.list_buckets_paginator()
# 一覧表示されたバケットをトラバースします。
for page in paginator.iter_page(oss.ListBucketsRequest()):
# 各ページの各バケットの名前、場所、作成日、およびリソースグループ ID を表示します。
for o in page.buckets:
print(f'Bucket: {o.name}, Location: {o.location}, Created: {o.creation_date}, Resource Group ID: {o.resource_group_id}')
# スクリプトが直接実行されたときに処理ロジックを開始するために、main 関数を呼び出します。
if __name__ == "__main__":
main() # スクリプトの関数のエントリポイントを指定します。制御プログラムフローはここから開始されます。
一般的なシナリオ
名前に特定のプレフィックスが含まれるバケットを一覧表示する
marker パラメータで指定されたバケットの後にある名前のバケットを一覧表示する
特定のバケット数を一覧表示する
関連情報
バケットを一覧表示するために使用される完全なサンプルコードについては、list_buckets.py にアクセスしてください。