多数のバケットを手動で管理するのは非効率的で、エラーが発生しやすくなります。プログラムですべてまたは一部のバケットをリストして、アセットインベントリ、一括操作、権限監査などの自動タスクをサポートできます。バケットはアルファベット順にリストされます。
仕組み
バケットのリスト操作の動作は、リクエストパラメーターとページングによって異なります。
リクエストパラメーター
次のリクエストパラメーターを設定して、結果をフィルターおよび制御します。
パラメーター | 説明 |
prefix | プレフィックスフィルター: 返されるバケットを、名前がこの文字列で始まるものに制限します。 |
marker | ページネーショントークン: リストの開始位置を指定します。結果は、このトークンの後にアルファベット順で最初に来るバケットから始まります。 |
max-keys | ページあたりのアイテム数: 1 回のリクエストで返すバケットの最大数を指定します。値は 1 から 1,000 の間でなければなりません。デフォルト値は 100 です。 |
ページングメカニズム
デフォルトでは、基本的なリスト操作は 1 ページ分のデータしか返しません。バケット数が 1 ページあたりの最大制限 (max-keys パラメーターで決定) を超える場合は、ページングを使用して完全なリストを取得する必要があります。
ページングは、サーバーが応答で返す 2 つのキーフィールドに依存します:
isTruncated (ブール値): true の場合、さらに多くのデータページが利用可能です。
nextMarker (文字列): 次のデータページの開始トークン。
ページングのコアロジックは次のとおりです: isTruncated フラグを確認します。true の場合、返された nextMarker を次のリクエストの marker パラメーターとして使用します。isTruncated が false を返すまでこのプロセスを繰り返します。
Python v2、Go v2、PHP v2、C# V2 などの一部のソフトウェア開発キット (SDK) は、このループを自動的に処理する Paginator を提供します。他の SDK の場合は、自分で実装する必要があります。
すべてのバケットをリストする
これは最も基本的なリスト操作です。
コンソール
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。
[バケット] ページには、デフォルトでアカウントに属するすべてのバケットが表示されます。バケットの数とそのプロパティをすばやく取得するには、右上隅にある [CSV のエクスポート] アイコン
をクリックします。
ossutil
コマンドラインインターフェイスである ossutil を使用して、バケットをリストできます。ossutil のインストール方法については、「ossutil のインストール」をご参照ください。
次のコマンドは、リクエスターが所有するすべてのバケットをリストします。
ossutil api list-bucketsこのコマンドの詳細については、「list-buckets (get-service)」をご参照ください。
SDK
次のセクションでは、一般的な SDK を使用してバケットをリストするためのサンプルコードを示します。他の SDK を使用したサンプルコードについては、「SDK の概要」をご参照ください。
Java
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.Bucket;
import java.util.List;
public class Demo {
public static void main(String[] args) throws Exception {
// たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// OSS Client インスタンスを作成します。
// OSS Client が不要になったら、shutdown メソッドを呼び出して関連リソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// 現在の Alibaba Cloud アカウント内のすべてのリージョンのすべてのバケットをリストします。
List<Bucket> buckets = ossClient.listBuckets();
for (Bucket bucket : buckets) {
System.out.println(" - " + bucket.getName());
}
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}Python
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() # スクリプトのエントリポイント。ここからプログラムフローが開始されます。Go
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// グローバル変数を定義
var (
region string // バケットが格納されているリージョン
)
// init 関数はコマンドラインパラメーターを初期化するために使用されます
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
}
func main() {
// コマンドラインパラメーターを解析
flag.Parse()
// リージョンが空かどうかを確認
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// デフォルト設定を読み込み、資格情報プロバイダーとリージョンを設定
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成
client := oss.NewClient(cfg)
// バケットをリストするリクエストを作成
request := &oss.ListBucketsRequest{}
// ページネーターを作成
p := client.NewListBucketsPaginator(request)
var i int
log.Println("Buckets:")
// ページネーターの各ページを走査
for p.HasNext() {
i++
// 次のページのデータを取得
page, err := p.NextPage(context.TODO())
if err != nil {
log.Fatalf("failed to get page %v, %v", i, err)
}
// ページの各バケットの情報を出力
for _, b := range page.Buckets {
log.Printf("Bucket: %v, StorageClass: %v, Location: %v\n", oss.ToString(b.Name), oss.ToString(b.StorageClass), oss.ToString(b.Location))
}
}
}C#
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョンを指定します。この例では、中国 (杭州) リージョンが使用されます。リージョンを cn-hangzhou に設定します。
var endpoint = null as string; // オプション。OSS サービスへのアクセスに使用するドメイン名を指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
// OSS SDK のデフォルト設定を読み込みます。設定は環境変数から資格情報 (AccessKey など) を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// ID 検証のために環境変数を使用して資格情報を取得することを明示的に設定します (フォーマット: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// 設定でバケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントを上書きします。
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定情報を使用して OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// ページ分割された結果を処理するために、ListBuckets 操作用のページネーターを作成します。
// ListBucketsRequest は SDK によって定義されたリクエストモデルです。この例では、デフォルトのコンストラクターを使用してすべてのバケットを取得します。
var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
Console.WriteLine("Buckets:");
await foreach (var page in paginator.IterPageAsync())
{
// 現在のページの各バケットを走査します。
foreach (var bucket in page.Buckets ?? [])
{
// バケット情報 (名前、ストレージクラス、場所) を出力します。
Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}");
}
}Node.js
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数を設定していることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケットの名前を指定します。
bucket: 'yourBucketName',
});
async function listBuckets() {
try {
// 現在の Alibaba Cloud アカウント内のすべてのリージョンのすべてのバケットをリストします。
const result = await client.listBuckets();
console.log(result);
} catch (err) {
console.log(err);
}
}
listBuckets();Harmony
import Client, { RequestError } from '@aliyun/oss';
// OSS クライアントインスタンスを作成
const client = new Client({
// STS 一時アクセス資格情報のアクセスキー ID に置き換えます
accessKeyId: 'yourAccessKeyId',
// STS 一時アクセス資格情報のアクセスキーシークレットに置き換えます
accessKeySecret: 'yourAccessKeySecret',
// STS 一時アクセス資格情報のセキュリティトークンに置き換えます
securityToken: 'yourSecurityToken',
});
// すべてのバケットをリスト
const listBuckets = async () => {
try {
// listBuckets メソッドを呼び出してすべてのバケットをリスト
const res = await client.listBuckets({});
// 返された結果を出力
console.log(JSON.stringify(res));
} catch (err) {
// リクエストエラーをキャッチして処理
if (err instanceof RequestError) {
console.log('Error code: ', err.code); // エラーコード
console.log('Error message: ', err.message); // エラーの説明
console.log('Request ID: ', err.requestId); // リクエストの一意の識別子
console.log('HTTP status code: ', err.status); // HTTP 応答ステータスコード
console.log('Error category: ', err.ec); // エラーカテゴリ
} else {
console.log('Unknown error: ', err); // RequestError 型ではないエラー
}
}
};
// すべてのバケットをリストする関数を呼び出す
listBuckets();
Ruby
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# この例では、中国 (杭州) リージョンのエンドポイントが使用されています。実際の エンドポイントを指定してください。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# 現在のアカウント内のすべてのリージョンのすべてのバケットをリストします。
buckets = client.list_buckets
buckets.each { |b| puts b.name }Android
完全なサンプルコードについては、「バケットのリスト」をご参照ください。
// 現在の 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());
}
}
});C++
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* OSS へのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
std::string Region = "yourRegion";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* 現在の Alibaba Cloud アカウントに属するすべてのバケットをリストします。 */
ListBucketsRequest request;
auto outcome = client.ListBuckets(request);
if (outcome.isSuccess()) {
/* バケットに関する情報を表示します。 */
std::cout <<" success, and bucket count is" << outcome.result().Buckets().size() << std::endl;
std::cout << "Bucket name is" << std::endl;
for (auto result : outcome.result().Buckets())
{
std::cout << result.Name() << std::endl;
}
}
else {
/* 例外を処理します。 */
std::cout << "ListBuckets fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
return 0;
}iOS
OSSGetServiceRequest * getService = [OSSGetServiceRequest new];
// 現在の Alibaba Cloud アカウント内のすべてのリージョンのすべてのバケットをリストします。
OSSTask * getServiceTask = [client getService:getService];
[getServiceTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetServiceResult * result = task.result;
NSLog(@"buckets: %@", result.buckets);
NSLog(@"owner: %@, %@", result.ownerId, result.ownerDispName);
[result.buckets enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSDictionary * bucketInfo = obj;
NSLog(@"BucketName: %@", [bucketInfo objectForKey:@"Name"]);
NSLog(@"CreationDate: %@", [bucketInfo objectForKey:@"CreationDate"]);
NSLog(@"Location: %@", [bucketInfo objectForKey:@"Location"]);
}];
} else {
NSLog(@"get service failed, error: %@", task.error);
}
return nil;
}];
// 同期ブロッキングを実装して、タスクの完了を待ちます。
// [getServiceTask waitUntilFinished];C
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* char* 文字列を使用して aos_string_t 型のデータを初期化します。 */
aos_str_set(&options->config->endpoint, endpoint);
/* 環境変数からアクセス資格情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// 2 つの追加パラメーターを指定します。
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* CNAME を使用して OSS にアクセスするかどうかを指定します。値 0 は CNAME が使用されないことを示します。 */
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを設定します。 */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリを管理するためのメモリプールを作成します。aos_pool_t は apr_pool_t と同等です。メモリプールを作成するためのコードは APR ライブラリに含まれています。 */
aos_pool_t *pool;
/* メモリプールを作成します。2 番目のパラメーターの値は NULL です。この値は、プールが他のメモリプールを継承しないことを示します。 */
aos_pool_create(&pool, NULL);
/* オプションを作成して初期化します。このパラメーターには、endpoint、access_key_id、access_key_secret、is_cname、curl などのグローバル設定情報が含まれます。 */
oss_request_options_t *oss_client_options;
/* メモリプール内のメモリリソースをオプションに割り当てます。 */
oss_client_options = oss_request_options_create(pool);
/* oss_client_options を初期化します。 */
init_options(oss_client_options);
/* パラメーターを初期化します。 */
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
oss_list_buckets_params_t *params = NULL;
oss_list_bucket_content_t *content = NULL;
int size = 0;
params = oss_create_list_buckets_params(pool);
/* バケットをリストします。 */
resp_status = oss_list_bucket(oss_client_options, params, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("list buckets succeeded\n");
} else {
printf("list buckets failed\n");
}
/* バケットを表示します。 */
aos_list_for_each_entry(oss_list_bucket_content_t, content, ¶ms->bucket_list, node) {
printf("BucketName: %s\n", content->name.data);
++size;
}
/* メモリプールを解放します。この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。 */
aos_http_io_deinitialize();
return 0;
}ossbrowser
ossbrowser 2.0 にログインした後、左側の [すべて] ボタンをクリックすると、アカウントに属するすべてのバケットが表示されます。ossbrowser 2.0 のインストールとログインの方法については、「ossbrowser 2.0 のインストール」および「ossbrowser 2.0 へのログイン」をご参照ください。

API
前述の操作は API 呼び出しに基づいています。プログラムに高度なカスタマイズが必要な場合は、REST API リクエストを直接送信できます。これを行うには、署名を計算するコードを手動で記述する必要があります。詳細については、「ListBuckets (GetService)」をご参照ください。
指定されたプレフィックスを持つバケットをリストする
prefix パラメーターを設定して、サーバー側で結果をフィルターできます。これにより、名前が指定されたプレフィックスに一致するバケットのみが返されます。
ossutil
プレフィックス example を持つ、リクエスターが所有するすべてのバケットをリストします。
ossutil api list-buckets --prefix example詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットのリスト (Java SDK)」をご参照ください。
// 1. リクエストオブジェクトを作成します。
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// 2. prefix パラメーターを設定します。
listBucketsRequest.setPrefix("example");
// 3. リクエストを実行します。
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);Python
完全なサンプルコードについては、「バケットのリスト (Python SDK V2)」をご参照ください。
# prefix パラメーターを持つリクエストオブジェクトをページネーターの iter_page メソッドに渡します。
for page in paginator.iter_page(oss.ListBucketsRequest(
prefix='example'
)):
# ... ループ処理 ...Go
完全なサンプルコードについては、「バケットのリスト (Go SDK V2)」をご参照ください。
// 1. リクエストオブジェクトを作成し、Prefix フィールドを設定します。
request := &oss.ListBucketsRequest{
Prefix: oss.Ptr("example"),
}
// 2. このリクエストオブジェクトを使用してページネーターを作成します。
p := client.NewListBucketsPaginator(request)Node.js
完全なサンプルコードについては、「バケットのリスト (Node.js SDK)」をご参照ください。
// listBuckets メソッドのパラメーターオブジェクトでプレフィックスを指定します。
const result = await client.listBuckets({
prefix: 'example'
});Harmony
完全なサンプルコードについては、「バケットのリスト (Harmony SDK)」をご参照ください。
// キーコード: listBuckets を呼び出すときに、プレフィックスを含むオブジェクトを渡します。
const res = await client.listBuckets({
prefix: 'bucketNamePrefix'
});Ruby
完全なサンプルコードについては、「バケットのリスト」をご参照ください。
# キーコード: :prefix をパラメーターとして list_buckets を呼び出します。
buckets = client.list_buckets(:prefix => 'example')指定された位置以降のバケットをリストする
marker パラメーターを設定して、リストの開始位置を指定できます。これは、手動ページングを実装する上で重要なステップです。
ossutil
examplebucket の後に来る、リクエスターが所有するすべてのバケットをリストします。
ossutil api list-buckets --marker examplebucket詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットのリスト (Java SDK)」をご参照ください。
// 1. marker を "examplebucket" に設定して、"examplebucket" の後に来るバケットをリストします。
String nextMarker = "examplebucket";
BucketList bucketListing;
do {
// 2. 現在の marker を使用してリクエストを送信します。
bucketListing = ossClient.listBuckets(new ListBucketsRequest()
.withMarker(nextMarker)
.withMaxKeys(200));
// 3. marker を更新して次のページを取得します。
nextMarker = bucketListing.getNextMarker();
} while (bucketListing.isTruncated());Python
完全なサンプルコードについては、「バケットのリスト (Python SDK V2)」をご参照ください。
# marker を "example-bucket" に設定して、"example-bucket" の後に来るバケットをリストします。
for page in paginator.iter_page(oss.ListBucketsRequest(
marker="example-bucket"
)):
# ... ページを反復処理 ...Go
完全なサンプルコードについては、「バケットのリスト (Go SDK V2)」をご参照ください。
// marker を "example-bucket" に設定して、"example-bucket" の後に来るバケットをリストします。
request := &oss.ListBucketsRequest{
Marker: oss.Ptr("example-bucket"),
}
// このリクエストを使用してページネーターを作成します。
p := client.NewListBucketsPaginator(request)Harmony
完全なサンプルコードについては、「バケットのリスト (Harmony SDK)」をご参照ください。
// marker の初期値を "examplebucket" に設定して、リストの開始点を指定します。
let marker: string | undefined = "examplebucket";
let isTruncated = true;
while (isTruncated) {
// リクエストで現在の marker を使用します。
const res = await client.listBuckets({
marker
});
// ...
// 次のループのために marker を更新します。
marker = res.data.nextMarker;
isTruncated = res.data.isTruncated;
}Node.js
完全なサンプルコードについては、「バケットのリスト (Node.js SDK)」をご参照ください。
// marker を 'examplebucket' に設定して、'examplebucket' の後に来るバケットをリストします。
const result = await client.listBuckets({
marker: 'examplebucket'
});Android
完全なサンプルコードについては、「バケットのリスト」をご参照ください。
ListBucketsRequest request = new ListBucketsRequest();
// marker を "examplebucket" に設定して、"examplebucket" の後に来るバケットをリストします。
request.setMarker("examplebucket");
ossClient.asyncListBuckets(request, ...);iOS
完全なサンプルコードについては、「バケットのリスト」をご参照ください。
OSSGetServiceRequest * getService = [OSSGetServiceRequest new];
// marker を "examplebucket" に設定して、"examplebucket" の後に来るバケットをリストします。
getService.marker = @"examplebucket";
// このリクエストオブジェクトを使用して非同期タスクを開始します。
OSSTask * getServiceTask = [client getService:getService];指定されたリソースグループ内のバケットをリストする
指定されたリソースグループ ID に基づいてバケットをリストできます。
ossutil
ID rg-123 のリソースグループ内のすべてのバケットをリストします。
ossutil api list-buckets --resource-group-id rg-123詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットのリスト (Java SDK)」をご参照ください。
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// キーコード: フィルターするリソースグループの ID を設定します。
listBucketsRequest.setResourceGroupId("rg-aek27tc****");
// 設定されたリクエストオブジェクトを listBuckets メソッドに渡します。
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);Python
完全なサンプルコードについては、「バケットのリスト (Python SDK V2)」をご参照ください。
# キーコード: iter_page メソッドでリクエストを構築し、resource_group_id を指定します。
for page in paginator.iter_page(oss.ListBucketsRequest(
resource_group_id="rg-aek27tc********"
)):
# ... ページを反復処理 ...Go
完全なサンプルコードについては、「バケットのリスト (Go SDK V2)」をご参照ください。
// キーコード: リクエストを作成し、ResourceGroupId フィールドを設定します。
request := &oss.ListBucketsRequest{
ResourceGroupId: oss.Ptr("rg-aek27tc********"),
}
// このリクエストを使用してページネーターを作成します。
p := client.NewListBucketsPaginator(request)PHP
完全なサンプルコードについては、「バケットのリスト (PHP SDK V2)」をご参照ください。
// キーコード: iterPage メソッドでリクエストを構築し、resourceGroupId を指定します。
$iter = $paginator->iterPage(new Oss\Models\ListBucketsRequest(
resourceGroupId: "rg-aekzfalvmw2sxby"
));リクエストごとに返されるアイテム数を制御する
max-keys パラメーターを設定して、1 回のリクエストで返されるバケットの数を制御できます。このパラメーターはページサイズを定義します。
ossutil
この呼び出しで返されるバケットの数を最大 100 に制限します。
ossutil api list-buckets --max-keys 100詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットのリスト (Java SDK)」をご参照ください。
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// キーコード: maxKeys パラメーターを 500 に設定して、返されるバケットの数を最大 500 に制限します。
listBucketsRequest.setMaxKeys(500);
// 設定されたリクエストオブジェクトをメソッドに渡します。
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);Python
完全なサンプルコードについては、「バケットのリスト (Python SDK V2)」をご参照ください。
# キーコード: ListBucketsRequest を作成するときに、値が 10 の max_keys パラメーターを渡します。
# これにより、ページネーターはリクエストごとに最大 10 個のバケットを取得します。
for page in paginator.iter_page(oss.ListBucketsRequest(
max_keys=10
)):
# ... ページを反復処理 ...Go
完全なサンプルコードについては、「バケットのリスト (Go SDK V2)」をご参照ください。
// キーコード: ListBucketsRequest を作成するときに MaxKeys フィールドを 5 に設定します。
// ページネーターはこの設定を使用して、リクエストごとに最大 5 個のバケットを取得します。
request := &oss.ListBucketsRequest{
MaxKeys: 5,
}
p := client.NewListBucketsPaginator(request)Node.js
完全なサンプルコードについては、「バケットのリスト (Node.js SDK)」をご参照ください。
// キーコード: listBuckets を呼び出すときに 'max-keys' プロパティを含むオブジェクトを渡します。
// 'max-keys' を 500 に設定して、返されるバケットの数を最大 500 に制限します。
const result = await client.listBuckets({
'max-keys': 500
});Android
完全なサンプルコードについては、「バケットのリスト」をご参照ください。
ListBucketsRequest request = new ListBucketsRequest();
// キーコード: maxKeys パラメーターを 500 に設定して、この非同期リクエストで返されるバケットの数を最大 500 に制限します。
request.setMaxKeys(500);
ossClient.asyncListBuckets(request, ...);iOS
完全なサンプルコードについては、「バケットのリスト」をご参照ください。
OSSGetServiceRequest * getService = [OSSGetServiceRequest new];
// キーコード: getService リクエストオブジェクトの maxKeys プロパティを 500 に設定します。
getService.maxKeys = 500;
OSSTask * getServiceTask = [client getService:getService];制限事項
転送アクセラレーションエンドポイントを使用してバケットをリストすることはできません。これは、転送アクセラレーションサービスが https://BucketName.oss-accelerate.aliyuncs.com のようにバケット名を含む第 3 レベルドメインのみを解決するためです。しかし、バケットをリストするリクエストは、https://oss-cn-hangzhou.aliyuncs.com のようにバケット名を含まないドメイン名を使用します。