バケットとは、Object Storage Service (OSS) に格納されるオブジェクトのコンテナーです。 OSS 内のすべてのオブジェクトは、バケットに格納されます。 バケットはアルファベット順に一覧表示されます。 現在の Alibaba Cloud アカウントに属し、特定の条件を満たすすべてのリージョン内のバケットを一覧表示できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントが使用されています。 OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報を設定する方法の詳細については、「Python 1.0 向け OSS SDK を使用してアクセス認証情報を設定する」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
バケットを一覧表示するには、
oss:ListBuckets権限が必要です。 詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
Alibaba Cloud アカウント内のすべてのバケットを一覧表示する
次のサンプルコードは、現在の Alibaba Cloud アカウント内のすべてのリージョンにあるバケットを一覧表示する方法の例を示しています。
次のコードを実行して、特定のリージョン内のバケットを一覧表示することはできません。 たとえば、コードで指定したバケットのリージョンが中国 (杭州) の場合、現在の Alibaba Cloud アカウント内のすべてのリージョンのバケットが一覧表示されます。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
service = oss2.Service(auth, endpoint, region=region)
# 現在のアカウント内のすべてのリージョンにあるすべてのバケットを一覧表示します。
for b in oss2.BucketIterator(service):
print(b.name)
名前に指定されたプレフィックスが含まれるバケットを一覧表示する
次のサンプルコードは、現在の Alibaba Cloud アカウント内のすべてのリージョンで、名前に example プレフィックスが含まれるバケットを一覧表示する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
service = oss2.Service(auth, endpoint, region=region)
# 現在のアカウント内で、名前に example プレフィックスが含まれるすべてのバケットを一覧表示します。
for b in oss2.BucketIterator(service, prefix='example'):
print(b.name)
marker で指定されたバケットよりもアルファベット順で後の名前のバケットを一覧表示する
次のサンプルコードは、現在の Alibaba Cloud アカウント内のすべてのリージョンで、examplebucket という名前のバケットよりもアルファベット順で後の名前のバケットを一覧表示する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
service = oss2.Service(auth, endpoint, region=region)
# 現在のアカウントで、examplebucket よりもアルファベット順で後の名前のすべてのバケットを一覧表示します。examplebucket という名前のバケットは一覧表示されません。
for b in oss2.BucketIterator(service, marker='examplebucket'):
print(b.name) 関連情報
バケットを一覧表示するために使用される完全なサンプルコードについては、GitHub をご覧ください。
バケットを一覧表示するために呼び出すことができる API 操作の詳細については、「ListBuckets (GetService)」をご参照ください。