バケットはアルファベット順に一覧表示されます。多くのバケットを手動で管理すると、非効率でエラーが発生しやすくなります。ListBuckets オペレーションを使用すると、アカウント内のすべてまたは一部のバケットのリストをプログラムで取得できます。これにより、アセットインベントリ、一括操作、権限監査などのタスクを自動化することができます。
仕組み
リクエストパラメーターとページネーションで、ListBuckets API の動作を制御します。
リクエストパラメーター
次のリクエストパラメーターは、結果のフィルターと制御に使用します。
|
パラメーター |
説明 |
|
prefix |
prefix によるフィルター:指定した prefix で始まる名前のバケットにレスポンスを制限します。 |
|
marker |
ページネーショントークン:一覧の開始位置を指定します。レスポンスには、marker の値の次にアルファベット順で続くバケットが含まれます。 |
|
max-keys |
ページあたりの項目数:1 回のレスポンスで返すバケットの最大数を指定します。値は 1~1,000 の整数である必要があります。デフォルト値は 100 です。 |
ページネーション
基本的なリスト操作では、デフォルトで 1 ページ分のデータのみを返します。バケット数が max-keys パラメーターで決まるページあたりの上限を超える場合、完全な一覧を取得するにはページネーションを使用する必要があります。
レスポンス内の次の 2 つの主要なフィールドが、ページネーションを可能にします:
-
isTruncated (ブール値):この値が
trueの場合、追加のページが存在することを示します。 -
nextMarker (文字列):次ページの結果を取得するためのページネーショントークンです。
ページネーションの基本ロジックは次のとおりです:ページネーションを行うには、isTruncated フラグを確認します。true の場合は、レスポンスの nextMarker の値を次のリクエストの marker パラメーターとして使用します。isTruncated が false を返すまで、このプロセスを繰り返します。
Python v2、Go v2、PHP v2、C# v2 などの一部の SDK は、このループを自動的に処理するページネーターを提供しています。その他の SDK では、このロジックを自分で実装する必要があります。
すべてのバケットの一覧表示
最も基本的な一覧取得です。
コンソール
OSSコンソールにログインします。
-
左側のナビゲーションペインで、バケット をクリックします。
デフォルトでは、[Buckets] ページに Alibaba Cloud アカウント配下のすべてのバケットが表示されます。バケット数と各バケットのプロパティをすばやく取得するには、右上隅の 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";
// バケットが配置されているリージョンを指定します。この例では、中国 (杭州) リージョンが使用されます。Region を cn-hangzhou に設定します。
String region = "cn-hangzhou";
// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// OSSClient インスタンスを作成します。
// OSSClient インスタンスが不要になったら、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))
}
}
}
PHP
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // 依存関係ライブラリをロードするためにオートローダーファイルをインポートします。
use AlibabaCloud\Oss\V2 as Oss;
// コマンドライン引数の説明を定義します。
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // リージョンは必須項目です。バケットが配置されているリージョン (例: oss-cn-hangzhou) を指定します。
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // エンドポイントはオプション項目です。他のサービスが OSS にアクセスするために使用できるドメイン名を指定します。
];
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// コマンドライン引数を解析します。
$options = getopt("", $longopts);
// 必須パラメーターが欠落していないか確認します。
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help"; // 必須パラメーターが欠落していることを示すメッセージが表示されます。
exit(1);
}
}
// コマンドライン引数の値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
// 環境変数から認証情報 (AccessKeyId と AccessKeySecret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // 環境変数から認証情報をロードします。
// SDK のデフォルト設定を使用します。
$cfg = Oss\Config::loadDefault(); // SDK のデフォルト設定をロードします。
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを設定します。
$cfg->setRegion($region); // リージョンを設定します。
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // エンドポイントが指定されている場合は、エンドポイントを設定します。
}
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg); // OSS クライアントインスタンスを作成します。
// ListBuckets 操作のページネーターを作成します。
$paginator = new Oss\Paginator\ListBucketsPaginator($client); // バケットを一覧表示するためのページネーターを作成します。
$iter = $paginator->iterPage(new Oss\Models\ListBucketsRequest()); // ページングイテレーターを取得します。
// バケットのページ分割された結果を走査します。
foreach ($iter as $page) { // 各ページのバケットのリストを走査します。
foreach ($page->buckets ?? [] as $bucket) { // 現在のページの各バケットを走査します。
print ("Bucket: $bucket->name, $bucket->location\n"); // バケット名とそのリージョンを出力します。
}
}
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({
// バケットが配置されているリージョンに region を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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 をご利用のバケット名に設定します。
bucket: 'yourBucketName',
});
async function listBuckets() {
try {
// アカウント配下のすべてのリージョンにあるすべてのバケットをリストします。
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({
// Security Token Service (STS) の一時的なアクセス認証情報の AccessKey ID と置き換えます。
accessKeyId: 'yourAccessKeyId',
// STS の一時的なアクセス認証情報の AccessKey Secret と置き換えます。
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();
Swift
import AlibabaCloudOSS
import Foundation
@main
struct Main {
static func main() async {
do {
// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
let region = "cn-hangzhou"
// オプション。OSS へのアクセスに使用するドメイン名を指定します。たとえば、中国 (杭州) の場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
let endpoint: String? = nil
// 環境変数から認証情報を読み込みます。事前に OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET を設定しておく必要があります。
let credentialsProvider = EnvironmentCredentialsProvider()
// OSS クライアントのパラメーターを設定します。
let config = Configuration.default()
.withRegion(region) // リージョンを設定します。
.withCredentialsProvider(credentialsProvider) // 認証情報を設定します。
// エンドポイントを設定します。
if let endpoint = endpoint {
config.withEndpoint(endpoint)
}
// OSS クライアントインスタンスを作成します。
let client = Client(config)
// バケットを走査するためのページネーターを作成します。
let paginator = client.listBucketsPaginator(ListBucketsRequest())
// すべてのバケットを走査し、その情報を出力します。
for try await page in paginator {
for bucket in page.buckets ?? [] {
print("Bucket name: \(bucket.name ?? ""), Storage class: \(bucket.storageClass ?? ""), Region: \(bucket.location ?? "")")
}
}
} catch {
// 例外をキャッチして処理します。
print("error:\n\(error)")
}
}
}
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
詳細については、「バケットのリスト (Android SDK)」をご参照ください。
// アカウントのすべてのリージョンにあるすべてのバケットをリストします。
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 アカウント情報を初期化します。 */
/* yourEndpoint を、バケットが所在するリージョンのエンドポイントに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* yourRegion を、バケットが所在するリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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);
/* 現在のアカウント配下にあるすべてのバケットをリスト表示します。 */
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];
// 現在のアカウント内のすべてのリージョンのすべてのバケットをリスト表示します。
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"
/* バケットが所在するリージョンのエンドポイントに yourEndpoint を設定します。たとえば、中国 (杭州) リージョンのエンドポイントは https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットが所在するリージョンに yourRegion を設定します。たとえば、中国 (杭州) リージョンの場合は cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* aos_string_t 型を char* 文字列で初期化します。 */
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[])
{
/* プログラムエントリで aos_http_io_initialize メソッドを呼び出して、ネットワークやメモリなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリ管理に使用されるメモリプールです。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 V1)」をご参照ください。
// 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
完全なサンプルコードについては、「バケットの一覧表示 (Ruby SDK)」をご参照ください。
# キーコード:list_buckets を :prefix パラメーターを指定して呼び出します。
buckets = client.list_buckets(:prefix => 'example')
指定した位置以降のバケットの一覧表示
marker パラメーターを設定して、一覧表示を開始する位置を指定します。これは、手動ページネーションを実装するためのコアステップです。
ossutil
所有しているすべてのバケットのうち、examplebucket の後に続くバケットを一覧表示します。
ossutil api list-buckets --marker examplebucket
詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットの一覧表示 (Java SDK V1)」をご参照ください。
// 1. marker を "examplebucket" に設定して、"examplebucket" の後に続くバケットを一覧表示します。
String nextMarker = "examplebucket";
BucketList bucketListing;
do {
// 2. 現在のマーカーを使用してリクエストを送信します。
bucketListing = ossClient.listBuckets(new ListBucketsRequest()
.withMarker(nextMarker)
.withMaxKeys(200));
// 3. 次のページを取得するためにマーカーを更新します。
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) {
// リクエストで現在のマーカーを使用します。
const res = await client.listBuckets({
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
完全なサンプルコードについては、「バケットの一覧表示 (Android SDK)」をご参照ください。
iOS (Objective-C)
ListBucketsRequest request = new ListBucketsRequest();
// marker を "examplebucket" に設定して、"examplebucket" の後に続くバケットを一覧表示します。
request.setMarker("examplebucket");
ossClient.asyncListBuckets(request, ...);
iOS
完全なサンプルコードについては、「バケットの一覧表示 (iOS SDK)」をご参照ください。
OSSGetServiceRequest * getService = [OSSGetServiceRequest new];
// marker を "examplebucket" に設定して、"examplebucket" の後に続くバケットを一覧表示します。
getService.marker = @"examplebucket";
// このリクエストオブジェクトを使用して非同期タスクを開始します。
OSSTask * getServiceTask = [client getService:getService];
指定したリソースグループ内のバケットの一覧表示
指定したリソースグループ内のバケットを一覧表示します。
ossutil
所有しているすべてのバケットのうち、ID が rg-123 のリソースグループに属するバケットを一覧表示します。
ossutil api list-buckets --resource-group-id rg-123
詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットの一覧表示 (Java SDK V1)」をご参照ください。
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-aek27tc********"
));
リクエストあたりの項目数の制御
max-keys パラメーターを設定して、リクエストごとに返されるバケットの数を制限します。この値がページサイズになります。
ossutil
この呼び出しで返されるバケットの数を最大 100 に制限します。
ossutil api list-buckets --max-keys 100
詳細については、「list-buckets (get-service)」をご参照ください。
SDK
Java
完全なサンプルコードについては、「バケットの一覧表示 (Java SDK V1)」をご参照ください。
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// 主要なコード:maxKeys パラメーターを 500 に設定して、この呼び出しで返されるバケットの数を最大 500 に制限します。
listBucketsRequest.setMaxKeys(500);
// 設定したリクエストオブジェクトをメソッドに渡します。
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
Python
完全なサンプルコードについては、「バケットの一覧表示 (Python SDK V2)」をご参照ください。
# 主要なコード:ListBucketsRequest を作成する際に、max_keys パラメーターに 10 を渡します。
# これにより、ページネーターはリクエストごとに最大 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)」をご参照ください。
// 主要なコード:'max-keys' を 500 に設定して、この呼び出しで返されるバケットの数を最大 500 に制限します。
const result = await client.listBuckets({
'max-keys': 500
});
Android
完全なサンプルコードについては、「バケットの一覧表示 (Android SDK)」をご参照ください。
ListBucketsRequest request = new ListBucketsRequest();
// 主要なコード:maxKeys パラメーターを 500 に設定して、この非同期リクエストで返されるバケットの数を最大 500 に制限します。
request.setMaxKeys(500);
ossClient.asyncListBuckets(request, ...);
iOS
完全なサンプルコードについては、「バケットの一覧表示 (iOS SDK)」をご参照ください。
OSSGetServiceRequest * getService = [OSSGetServiceRequest new];
// 主要なコード:getService リクエストオブジェクトの maxKeys プロパティを 500 に設定します。
getService.maxKeys = 500;
OSSTask * getServiceTask = [client getService:getService];
制限事項
転送アクセラレーションエンドポイントを使用してバケットを一覧表示することはできません。転送アクセラレーションサービスは、バケット名を含む第 3 レベルドメイン名 (例:https://BucketName.oss-accelerate.aliyuncs.com) のみを解決するのに対し、バケットの一覧表示操作ではバケット名を含まないルートエンドポイント (例:https://oss-cn-hangzhou.aliyuncs.com) を使用するためです。