Harmony列举存储空间

更新时间:2025-03-10 10:30:45

存储空间是用来存储对象(Object)的容器。对象都隶属于存储空间。存储空间按照字母顺序排列。您可以列举当前账号所有地域下符合指定条件的存储空间。

注意事项

  • 关于OSS支持的RegionEndpoint的对应关系,请参见OSS地域和访问域名

  • 要列举存储空间,您必须具有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();

相关文档

  • 本页导读 (1)
  • 注意事项
  • 示例代码
  • 其他使用场景
  • 列举指定前缀的存储空间
  • 使用分页标记(marker)列出所有bucket
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等