バケットは、オブジェクトを格納するために使用されるコンテナーです。すべてのオブジェクトはバケットに格納する必要があります。バケットはアルファベット順にリストされます。ご利用の Alibaba Cloud アカウントに属するすべてのリージョンのバケットをリストし、特定の条件に基づいてフィルターできます。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名や Security Token Service (STS) などの方法を使用して OSSClient インスタンスを作成する必要があります。詳細については、「初期化 (Android SDK)」をご参照ください。
すべてのバケットのリスト
次のコードは、現在の Alibaba Cloud アカウント配下のすべてのリージョンにあるすべてのバケットをリストする例を示しています。
// アカウントのすべてのリージョンにあるすべてのバケットをリストします。
ListBucketsRequest request = new ListBucketsRequest();
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("info", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// リクエストは失敗しました。
if (clientException != null) {
// ネットワーク例外などのクライアント例外が発生しました。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー例外が発生しました。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});指定されたプレフィックスを持つバケットのリスト
次のコードは、現在の Alibaba Cloud アカウント配下のすべてのリージョンで、プレフィックスが "example" のバケットをリストする例を示しています。
プレフィックスはあいまい一致に使用されます。クエリは、指定されたプレフィックスで始まる名前を持つすべてのバケットを返します。たとえば、プレフィックスを `a` に設定すると、`abucket` や `abcbucket` などのバケットが返されます。
// STS アプリケーションサーバの URL を指定します。例: http://example.com
String stsServer = "http://example.com";
// OSSAuthCredentialsProvider を使用して、トークンの有効期限が切れたときに自動的に更新します。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// アカウントのすべてのリージョンで、プレフィックスが 'example' のバケットをリストします。
request.setPrefix("example");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// リクエストは失敗しました。
if (clientException != null) {
// ネットワーク例外などのクライアント例外が発生しました。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー例外が発生しました。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});指定されたマーカー以降のバケットのリスト
次のコードは、現在の Alibaba Cloud アカウント配下のすべてのリージョンで、名前がアルファベット順で "examplebucket" の後にあるバケットをリストする例を示しています。
プレフィックスベースのクエリは、指定されたプレフィックスで始まる名前を持つすべてのバケットを返します。たとえば、プレフィックスが a のクエリは、abucket や abcbucket などのバケットを返します。
クエリ結果には、あいまい一致によって返された最初のバケットと、それ以降のすべてのバケットが含まれます。
// STS アプリケーションサーバの URL を指定します。例: http://example.com
String stsServer = "http://example.com";
// OSSAuthCredentialsProvider を使用して、トークンの有効期限が切れたときに自動的に更新します。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// アカウントのすべてのリージョンで、アルファベット順で 'examplebucket' の後にあるバケットをリストします。
request.setMarker("examplebucket");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// リクエストは失敗しました。
if (clientException != null) {
// ネットワーク例外などのクライアント例外が発生しました。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー例外が発生しました。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});指定された数のバケットのリスト
次のコードは、現在の Alibaba Cloud アカウント配下のすべてのリージョンにあるバケットをリストし、返されるバケットの数を最大 500 に制限する例を示しています。
// STS アプリケーションサーバの URL を指定します。例: http://example.com
String stsServer = "http://example.com";
// OSSAuthCredentialsProvider を使用して、トークンの有効期限が切れたときに自動的に更新します。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);
ListBucketsRequest request = new ListBucketsRequest();
// アカウントのすべてのリージョンにあるバケットをリストし、返されるバケットの数を 500 に制限します。デフォルト値は 100、最大値は 1000 です。
request.setMaxKeys(500);
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
List<OSSBucketSummary> buckets = result.getBuckets();
for (int i = 0; i < buckets.size(); i++) {
Log.i("i", "name: " + buckets.get(i).name + " "
+ "location: " + buckets.get(i).location);
}
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
// リクエストは失敗しました。
if (clientException != null) {
// ネットワーク例外などのクライアント例外が発生しました。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー例外が発生しました。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});関連ドキュメント
完全なサンプルコードについては、GitHub のサンプルをご参照ください。
この操作の API リファレンスについては、「ListBuckets (GetService)」をご参照ください。