设置对象 ACL

功能说明

设置文件的 ACL 信息,通过 XCosACL,XCosGrantFullControl,XCosGrantRead,XCosGrantWrite传入 header 的方式来设置 ACL,或者通过 ACLXML 传入 body 来设置 ACL,两种方式只能选择一种,否则会返回冲突。

注意:当前访问策略条目限制为1000条,如果您不需要进行对象 ACL 控制,请不要设置,默认继承 Bucket 权限。

方法原型

  1. func (s *ObjectService) PutACL(ctx context.Context, key string, opt *ObjectPutACLOptions) (*Response, error)

请求示例

通过 Header 设置 Object ACL

  1. opt := &cos.ObjectPutACLOptions{
  2. Header: &cos.ACLHeaderOptions{
  3. XCosACL: "private",
  4. },
  5. }
  6. key := "test/hello.txt"
  7. resp, err := client.Object.PutACL(context.Background(), key, opt)

通过 Body 设置 Object ACL

  1. opt = &cos.ObjectPutACLOptions{
  2. Body: &cos.ACLXml{
  3. Owner: &cos.Owner{
  4. ID: "qcs::cam::uin/100000760461:uin/100000760461",
  5. },
  6. AccessControlList: []cos.ACLGrant{
  7. {
  8. Grantee: &cos.ACLGrantee{
  9. Type: "RootAccount",
  10. ID: "qcs::cam::uin/100000760461:uin/100000760461",
  11. },
  12. Permission: "FULL_CONTROL",
  13. },
  14. },
  15. },
  16. }
  17. resp, err = client.Object.PutACL(context.Background(), key, opt)

参数说明

  1. type ACLHeaderOptions struct {
  2. XCosACL string
  3. XCosGrantRead string
  4. XCosGrantWrite string
  5. XCosGrantFullControl string
  6. }
参数名称参数描述类型必填
key对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg 中,对象键为 doc1/pic1.jpgstring
XCosACL设置 Bucket 的 ACL,如 private,public-read,public-read-writestring
XCosGrantFullControl赋予指定账户对 Bucket 的读写权限。格式为id=" ",id=" "当需要给子账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{SubUin}"当需要给根账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{OwnerUin}"例如id="qcs::cam::uin/123:uin/456",id="qcs::cam::uin/123:uin/123"string
XCosGrantRead赋予指定账户对 Bucket 的读权限。格式为id=" ",id=" "当需要给子账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{SubUin}"当需要给根账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{OwnerUin}"例如id="qcs::cam::uin/123:uin/456",id="qcs::cam::uin/123:uin/123"string
XCosGrantWrite赋予指定账户对 Bucket 的写权限。格式为id=" ",id=" "当需要给子账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{SubUin}"当需要给根账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{OwnerUin}"例如id="qcs::cam::uin/123:uin/456",id="qcs::cam::uin/123:uin/123"string
ACLXML赋予指定账户对 Bucket 的访问权限,具体格式见 get object acl 返回结果说明struct