获取对象访问权限

  • GetObjectAcl

GetObjectAcl操作可以获取对象的access control list(ACL)信息。对一个对象执行GetObjectAcl操作需要具有READ_ACP权限。

代码示例:

// 获取object的access control list信息
func GetObjectAcl(svc *s3.S3) {
    input := &s3.GetObjectAclInput{
        Bucket: aws.String("exampleBucket"),
        Key:    aws.String("exampleKey"),
    }

    result, err := svc.GetObjectAcl(input)
    if err != nil {
        fmt.Printf("fail to get object ACL. %v\n", err)
        return
    }
    fmt.Println(result)
}

GetObjectAclInput可设置的参数如下:

参数 类型 说明 是否必要
Bucket *string 对象所在桶的名称。
Key *string 对象的key。
VersionId *string 对象的版本Id

GetObjectAclOutput返回的属性如下:

参数 类型 说明
Grants []*Grant 授权信息数组,数组中每一项描述了权限被授予者的用户类型、用户名、邮箱地址、用户Id、用户组和授予权限类型等信息。
Owner *Owner 对象所在桶的拥有者信息,包含了用户名和用户Id等信息。
RequestCharged *string 如果返回结果中包含该属性,表示该请求的发起者对该次请求操作付费。
  • GetObjectAclRequest

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

代码示例:

func GetObjectAclRequest(svc *s3.S3) {
    input := &s3.GetObjectAclInput{
        Bucket: aws.String("exampleBucket"),
        Key:    aws.String("exampleKey"),
    }
    req, resp := svc.GetObjectAclRequest(input)

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

响应结果:

HTTP状态 响应码 描述
200 Success 操作成功。
400 InvalidBucketName 请求中设置桶的名字不合法。
400 InvalidObjectName 请求中设置对象的名字不合法
403 AccessDenied 用户没有权限执行操作。
404 NoSuchBucket 请求参数中设置的桶不存在。
404 NotFound 请求参数中设置的对象key或者版本Id不存在。