开发者社区> 问答> 正文

判断Bucket是否存在

已解决

展开
收起
2018-07-09 12:53:26 1137 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    存储空间(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。

    2018-07-10 09:58:01
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载