全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

管理存储空间

更新时间:2017-09-29 17:24:40

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

查看所有Bucket

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

说明: ListBuckets的示例代码在sample/list_buckets.go

  1. import (
  2. "fmt"
  3. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  4. )
  5. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  6. if err != nil {
  7. // HandleError(err)
  8. }
  9. // 列出Bucket,默认100条。
  10. lsRes, err := client.ListBuckets()
  11. if err != nil {
  12. // HandleError(err)
  13. }
  14. fmt.Println("buckets:", lsRes.Buckets)
  15. // 指定前缀筛选
  16. lsRes, err = client.ListBuckets(oss.Prefix("my-bucket"))
  17. if err != nil {
  18. // HandleError(err)
  19. }
  20. fmt.Println("buckets:", lsRes.Buckets)

创建Bucket

说明: CreateBucket的示例代码在sample/create_bucket.go

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

  1. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  2. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  3. if err != nil {
  4. // HandleError(err)
  5. }
  6. err = client.CreateBucket("my-bucket")
  7. if err != nil {
  8. // HandleError(err)
  9. }

创建Bucket时不指定权限,使用默认权限oss.ACLPrivate。创建时用户可以指定Bucket的权限:

  1. err = client.CreateBucket("my-bucket", oss.ACL(oss.ACLPublicRead))
  2. if err != nil {
  3. // HandleError(err)
  4. }

说明:

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

删除Bucket

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

  1. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  2. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  3. if err != nil {
  4. // HandleError(err)
  5. }
  6. err = client.DeleteBucket("my-bucket")
  7. if err != nil {
  8. // HandleError(err)
  9. }

注意:

  • 如果该Bucket下还有文件存在,则需要先删除所有文件才能删除Bucket。
  • 如果该Bucket下还有未完成的上传请求,则需要通过Bucket.ListMultipartUploadsBucket.AbortMultipartUpload先取消请求才能删除Bucket。详细信息请参考API文档

查看Bucket是否存在

用户可以通过Client.IsBucketExist接口查看当前用户的某个Bucket是否存在:

  1. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  2. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  3. if err != nil {
  4. // HandleError(err)
  5. }
  6. isExist, err := client.IsBucketExist("my-bucket")
  7. if err != nil {
  8. // HandleError(err)
  9. }

Bucket访问权限

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

说明: Bucket访问权限的示例代码sample/bucket_acl.go

查看Bucket的访问权限

通过Client.GetBucketACL查看Bucket的ACL:

  1. import "fmt"
  2. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  3. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  4. if err != nil {
  5. // HandleError(err)
  6. }
  7. aclRes, err := client.GetBucketACL("my-bucket")
  8. if err != nil {
  9. // HandleError(err)
  10. }
  11. fmt.Println("Bucket ACL:", aclRes.ACL)

设置Bucket的访问权限(ACL)

通过Client.SetBucketACL设置Bucket的ACL:

  1. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  2. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  3. if err != nil {
  4. // HandleError(err)
  5. }
  6. err = client.SetBucketACL("my-bucket", oss.ACLPublicRead)
  7. if err != nil {
  8. // HandleError(err)
  9. }

说明: Bucket有三种权限私有读写、公共读私有写、公共读写,分布对应Go sdk的常量ACLPrivate、ACLPublicRead和ACLPublicReadWrite。

本文导读目录