获取桶访问权限信息

Bucket是用于存储对象(Object)的容器,所有的对象都必须隶属于某个Bucket。本文介绍如何获取可用的桶(Bucket)访问权限信息。

  • GetBucketAcl

GetBucketAcl操作用户获取bucket的access control list(ACL)信息。bucket的ACL可以在创建的时候设置并且通过API查看,用户需要具有READ_ACP(读取bucket ACL信息)权限才可以查询bucket的ACL信息。

代码示例:

// 获取桶的ACL信息
func GetBucketAcl(svc *s3.S3) {
    getBucketAclInput := &s3.GetBucketAclInput{
        Bucket: aws.String("exampleBucket"),
    }

    getBucketAclOutput, err := svc.GetBucketAcl(getBucketAclInput)
    if err != nil {
        fmt.Printf("fail to get bucekt acl. %v\n", err)
        return
    }
    owner := getBucketAclOutput.Owner
    fmt.Printf("owner is %v with ID %v\n", *owner.DisplayName, *owner.ID)
    for _, grant := range getBucketAclOutput.Grants {
        fmt.Println(grant.String())
    }
}

GetBucketAclInput可设置的参数如下:

参数 类型 说明 是否必要
Bucket *string bucket的名称。

GetBucketAclOutput返回的属性如下:

属性名 类型 说明
Grants []*Grant Grant信息的数组,包含了每项授权和被授予人的信息
Owner *Owner bucket的拥有者信息。
  • GetBucketAclRequest

GetBucketAclRequest操作首先生成一个"request.Request"对象,该对象是一个执行GetBucketAcl操作的请求。通过调用Request对象的Send方法完成获取bucket ACL信息的操作。该方法可以生成定制化的请求,例如自定义请求头部请求超时重试设置。

代码示例:

func GetBucketAclRequest(svc *s3.S3) {
    getBucketAclInput := &s3.GetBucketAclInput{
        Bucket: aws.String("exampleBucket"),
    }
    req, resp := svc.GetBucketAclRequest(getBucketAclInput)

    err := req.Send()
    if err != nil {
        fmt.Printf("fail to get bucket acl. %v\n", err)
    } else {
        fmt.Println(resp)
    }
}

 响应结果:

HTTP状态 响应码 描述
200 Success 操作成功。
403 AccessDenied 用户没有权限执行操作。
404 NoSuchBucket 操作指定的bucket不存在。