存储空间(Bucket)是OSS上的命名空间,也是计费、权限控制、日志记录等高级功能的管理实体。

查看所有Bucket

使用listBuckets接口列出当前用户下的所有Bucket,用户还可以指 定prefix参数,列出Bucket名字为特定前缀的所有Bucket:

let OSS = require('ali-oss');

let client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function listBuckets() {
  try {
    const result = await client.listBuckets();
    console.log(result);
    const result2 = await client.listBuckets({
      prefix: 'prefix',
    });
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

listBuckets();

创建Bucket

使用putBucket接口创建一个Bucket,用户需要指定Bucket的名字:

let OSS = require('ali-oss');

let client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

// putBucket
async function putBucket() {
  try {
    const result = await client.putBucket('your bucket name');
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

putBucket();
注意
  • Bucket的命名规范请查看OSS 基本概念
  • 由于存储空间的名字是全局唯一的,所以必须保证您的Bucket名字不与别人的重复。

删除Bucket

使用deleteBucket接口删除一个Bucket,用户需要指定Bucket的名字:

let OSS = require('ali-oss');

let client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function deleteBucket() {
  try {
    const result = await client.deleteBucket('your bucket name');
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

deleteBucket();
注意
  • 如果该Bucket下还有文件存在,则需要先删除所有文件才能删除Bucket。
  • 如果该Bucket下还有未完成的上传请求,则需要通过listUploadsabortMultipartUpload先取消请求才能删除Bucket。

Bucket访问权限

用户可以设置Bucket的访问权限,允许或者禁止匿名用户对其内容进行读写。更 多关于访问权限的内容请参考访问权限

  • 获取Bucket的访问权限(ACL)

    通过getBucketACL查看Bucket的ACL:

    let OSS = require('ali-oss');
    
    let client = new OSS({
      region: '<Your region>',
      accessKeyId: '<Your AccessKeyId>',
      accessKeySecret: '<Your AccessKeySecret>'
    });
    
    async function getBucketACL() {
      try {
        const result = await client.getBucketACL('luozhang002');
        console.log(result);
      } catch (err) {
        console.log(err);
      }
    }
    
    getBucketACL();
    
  • 设置Bucket的访问权限(ACL)

    通过putBucketACL设置Bucket的ACL:

    let OSS = require('ali-oss');
    
    let client = new OSS({
      region: '<Your region>',
      accessKeyId: '<Your AccessKeyId>',
      accessKeySecret: '<Your AccessKeySecret>'
    });
    
    async function putBucketACL() {
      try {
        const result = await client.putBucketACL('bucket name', 'public-read');
        console.log(result);
      } catch (err) {
        console.log(err);
      }
    }
    
    putBucketACL();