全部產品
Search
文件中心

Object Storage Service:列舉儲存空間(Harmony SDK)

更新時間:Nov 29, 2025

儲存空間是用來儲存物件(Object)的容器。對象都隸屬於儲存空間。儲存空間按照字母順序排列。您可以列舉當前帳號所有地區下符合指定條件的儲存空間。

注意事項

  • 關於OSS支援的Region與Endpoint的對應關係,請參見地區和Endpoint

  • 要列舉儲存空間,您必須具有oss:ListBuckets許可權。具體操作,請參見為RAM使用者授予自訂的權限原則

  • 以下代碼僅支援列舉當前阿里雲帳號下所有地區的儲存空間,不支援列舉指定地區的儲存空間。列舉結果與填寫endpoint關聯的地區無關。

範例程式碼

以下代碼用於列舉當前帳號所有地區下的儲存空間。

import Client, { RequestError } from '@aliyun/oss';

// 建立OSS用戶端執行個體
const client = new Client({
  // 請替換為STS臨時訪問憑證的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 請替換為STS臨時訪問憑證的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 請替換為STS臨時訪問憑證的Security Token
  securityToken: 'yourSecurityToken',
});

// 列出所有bucket
const listBuckets = async () => {
  try {
    // 調用listBuckets方法列出所有的bucket
    const res = await client.listBuckets({});

    // 列印返回結果
    console.log(JSON.stringify(res));
  } catch (err) {
    // 捕獲並處理請求錯誤
    if (err instanceof RequestError) {
      console.log('錯誤碼: ', err.code); // 錯誤碼
      console.log('錯誤資訊: ', err.message); // 錯誤描述
      console.log('請求ID: ', err.requestId); // 請求的唯一標識
      console.log('HTTP狀態代碼: ', err.status); // HTTP響應狀態代碼
      console.log('錯誤類別: ', err.ec); // 錯誤類別
    } else {
      console.log('未知錯誤: ', err); // 非RequestError類型的錯誤
    }
  }
};

// 調用函數,列出所有bucket
listBuckets();

其他使用情境

列舉指定首碼的儲存空間

以下代碼用於列舉當前帳號所有地區下以bucketNamePrefix為首碼(prefix)的儲存空間。

import Client, { RequestError } from '@aliyun/oss';

// 建立OSS用戶端執行個體
const client = new Client({
  // 請替換為STS臨時訪問憑證的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 請替換為STS臨時訪問憑證的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 請替換為STS臨時訪問憑證的Security Token
  securityToken: 'yourSecurityToken',
});

// 列出以特定首碼開頭的bucket
const listBucketsWithPrefix = async () => {
  try {
    // 調用listBuckets方法,並指定prefix參數過濾bucket名稱
    const res = await client.listBuckets({
      prefix: 'bucketNamePrefix' // 指定bucket名稱的首碼
    });

    // 列印返回結果
    console.log(JSON.stringify(res));
  } catch (err) {
    if (err instanceof RequestError) {
      console.log('錯誤碼: ', err.code);
      console.log('錯誤資訊: ', err.message);
      console.log('請求ID: ', err.requestId);
      console.log('HTTP狀態代碼: ', err.status);
      console.log('錯誤類別: ', err.ec);
    } else {
      console.log('未知錯誤: ', err);
    }
  }
};

// 調用函數,列出以特定首碼開頭的bucket
listBucketsWithPrefix();

使用分頁標記(marker)列出所有bucket

以下代碼用於使用分頁標記(marker)列出所有bucket。

import Client, { RequestError } from '@aliyun/oss';

// 建立OSS用戶端執行個體
const client = new Client({
  // 請替換為STS臨時訪問憑證的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 請替換為STS臨時訪問憑證的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 請替換為STS臨時訪問憑證的Security Token
  securityToken: 'yourSecurityToken',
});

// 使用分頁標記(marker)列出所有bucket
const listBucketsWithMarker = async () => {
  try {
    let marker: string | undefined; // 分頁標記,初始為空白
    let isTruncated = true; // 是否還有更多資料需要擷取

    // 迴圈擷取所有bucket,直到沒有更多資料
    while (isTruncated) {
      const res = await client.listBuckets({
        marker // 當前分頁標記
      });

      // 列印返回結果
      console.log(JSON.stringify(res));

      // 更新分頁狀態
      isTruncated = res.data.isTruncated; // 是否還有更多資料
      marker = res.data.nextMarker; // 下一個分頁標記
    }
  } catch (err) {
    if (err instanceof RequestError) {
      console.log('錯誤碼: ', err.code);
      console.log('錯誤資訊: ', err.message);
      console.log('請求ID: ', err.requestId);
      console.log('HTTP狀態代碼: ', err.status);
      console.log('錯誤類別: ', err.ec);
    } else {
      console.log('未知錯誤: ', err);
    }
  }
};

// 調用函數,使用分頁標記列出所有bucket
listBucketsWithMarker();

相關文檔