获取对象访问权限
- 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不存在。 |