详细解答可以参考官方帮助文档
存储空间(Bucket)是OSS上的命名空间,也是计费、权限控制、日志记录等高级功能的管理实体。
使用Client.ListBuckets
接口列出当前用户下的所有Bucket,用户还可以指定Prefix
等参数,列出Bucket名字为特定前缀的所有Bucket:
说明: ListBuckets的示例代码在
sample/list_buckets.go
。
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
// 列出Bucket,默认100条。
lsRes, err := client.ListBuckets()
if err != nil {
// HandleError(err)
}
fmt.Println("buckets:", lsRes.Buckets)
// 指定前缀筛选
lsRes, err = client.ListBuckets(oss.Prefix("my-bucket"))
if err != nil {
// HandleError(err)
}
fmt.Println("buckets:", lsRes.Buckets)
说明: CreateBucket的示例代码在
sample/create_bucket.go
。
使用Client.CreateBucket
接口创建一个Bucket,用户需要指定Bucket的名字:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
err = client.CreateBucket("my-bucket")
if err != nil {
// HandleError(err)
}
创建Bucket时不指定权限,使用默认权限oss.ACLPrivate。创建时用户可以指定Bucket的权限:
err = client.CreateBucket("my-bucket", oss.ACL(oss.ACLPublicRead))
if err != nil {
// HandleError(err)
}
说明:
- Bucket的命名规范请查看OSS 基本概念。
- 由于存储空间的名字是全局唯一的,所以必须保证您的Bucket名字不与别人的重复。
使用Client.DeleteBucket
接口删除一个Bucket,用户需要指定Bucket的名字:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
err = client.DeleteBucket("my-bucket")
if err != nil {
// HandleError(err)
}
注意:
- 如果该Bucket下还有文件存在,则需要先删除所有文件才能删除Bucket。
- 如果该Bucket下还有未完成的上传请求,则需要通过
Bucket.ListMultipartUploads
和Bucket.AbortMultipartUpload
先取消请求才能删除Bucket。详细信息请参考API文档。
用户可以通过Client.IsBucketExist
接口查看当前用户的某个Bucket是否存在:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
isExist, err := client.IsBucketExist("my-bucket")
if err != nil {
// HandleError(err)
}
用户可以设置Bucket的访问权限,允许或者禁止匿名用户对其内容进行读写。更多关于访问权限的内容请参考访问权限。
说明: Bucket访问权限的示例代码
sample/bucket_acl.go
。
通过Client.GetBucketACL
查看Bucket的ACL:
import "fmt"
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
aclRes, err := client.GetBucketACL("my-bucket")
if err != nil {
// HandleError(err)
}
fmt.Println("Bucket ACL:", aclRes.ACL)
通过Client.SetBucketACL
设置Bucket的ACL:
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
err = client.SetBucketACL("my-bucket", oss.ACLPublicRead)
if err != nil {
// HandleError(err)
}
说明: Bucket有三种权限私有读写、公共读私有写、公共读写,分布对应Go sdk的常量ACLPrivate、ACLPublicRead和ACLPublicReadWrite。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。