更新时间:2023-11-08 GMT+08:00
分享

设置对象ACL

功能说明

设置指定桶中对象的访问权限。

方法定义

ObsClient.setObjectAcl

请求参数

字段名

类型

约束

说明

Bucket

String

必选

桶名。

Key

String

必选

对象名。

VersionId

String

可选

对象的版本号。

ACL

String

可选

预定义访问策略

Owner

Object

可选

对象的所有者。

  

ID

String

必选

对象所有者的DomainId。

Delivered

Boolean

可选

桶的ACL是否向桶内对象传递。

Grants

Array

可选

被授权用户权限信息列表。

  

Grantee

Object

必选

被授权用户。

  

Type

String

必选

被授权的用户类型

ID

String

如果Type为“CanonicalUser”则必选,否则必须为空

被授权用户的DomainId。

URI

String

如果Type为“Group”则必选,否则必须为空

被授权的用户组

Permission

String

必选

被授予的权限

  • Owner和Grants必须配套使用,且与ACL互斥。当设置了这两个字段时,不能设置ACL;反之,当设置了ACL时,不能设置Owner和Grants。
  • Owner、Grants与ACL不能全为空。

返回结果(InterfaceResult)

字段名

类型

说明

RequestId

String

OBS服务端返回的请求ID。

代码样例

obsClient.setObjectAcl({
       Bucket:'bucketname',
       Key : 'objectkey',
       // 设置对象所有者
       Owner:{ID:'ownerid'},
       Grants:[ 
            // 为指定用户设置完全控制权限            
            { Grantee: { Type: 'CanonicalUser',ID: 'userid' }, Permission: obsClient.enums.PermissionFullControl },
            // 为所有用户设置读权限
            { Grantee: { Type: 'Group', URI: obsClient.enums.GroupAllUsers }, Permission: obsClient.enums.PermissionRead }, 
       ]
},(err, result) => {
       if(err){
              console.error('Error-->' + err);
       }else{
              if(result.CommonMsg.Status < 300){
                     console.log('RequestId-->' + result.InterfaceResult.RequestId);
              }else{
                     console.log('Code-->' + result.CommonMsg.Code);
                     console.log('Message-->' + result.CommonMsg.Message);
              }
       }
});
  • 使用Owner参数指定对象的所有者信息;使用Grants参数指定被授权的用户信息。
  • ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的帐户ID,可通过OBS控制台“我的凭证”页面查看。
  • 当前OBS对象支持的可被授权的用户组为:
    • 所有用户:ObsClient.enums.GroupAllUsers

相关文档