API | 操作名 | 操作描述 |
设置存储桶 ACL | 设置指定存储桶访问权限控制列表 | |
查询存储桶 ACL | 查询存储桶的访问控制列表 |
API | 操作名 | 操作描述 |
设置对象 ACL | 设置存储桶中某个对象的访问控制列表 | |
查询对象 ACL | 查询对象的访问控制列表 |
// 方法 1 (设置自定义策略)public void setBucketAcl(String bucketName, AccessControlList acl)throws CosClientException, CosServiceException;// 方法 2 (设置预定义策略)public void setBucketAcl(String bucketName, CannedAccessControlList acl) throws CosClientException, CosServiceException;// 方法 3 (以上两种方法的封装, 包含两种策略设置,如果同时设置以自定定义策略为主)public void setBucketAcl(SetBucketAclRequest setBucketAclRequest)throws CosClientException, CosServiceException;
// bucket的命名规则为 BucketName-APPID ,此处填写的存储桶名称必须为此格式String bucketName = "examplebucket-1250000000";// 设置自定义 ACLAccessControlList acl = new AccessControlList();Owner owner = new Owner();// uin 可以在控制台查看到: https://console.tencentcloud.com/developerowner.setId("qcs::cam::uin/100000000001:uin/100000000001");acl.setOwner(owner);String id = "qcs::cam::uin/100000000001:uin/100000000001";UinGrantee uinGrantee = new UinGrantee("qcs::cam::uin/100000000001:uin/100000000001");uinGrantee.setIdentifier(id);acl.grantPermission(uinGrantee, Permission.FullControl);cosClient.setBucketAcl(bucketName, acl);// 设置预定义 ACL// 设置私有读写(默认新建的 bucket 都是私有读写)cosClient.setBucketAcl(bucketName, CannedAccessControlList.Private);// 设置公有读私有写cosClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);// 设置公有读写cosClient.setBucketAcl(bucketName, CannedAccessControlList.PublicReadWrite);
参数名称 | 描述 | 类型 |
setBucketAclRequest | 权限设置请求类 | SetBucketAclRequest |
Request 成员 | 设置方法 | 描述 | 类型 |
bucketName | 构造函数或 set 方法 | Bucket 的命名规则为 BucketName-APPID,详情请参见 存储桶概述 | String |
acl | 构造函数或 set 方法 | 自定义权限策略 | AccessControlList |
cannedAcl | 构造函数或 set 方法 | 预定义策略如公有读、公有读写、私有读 | CannedAccessControlList |
成员名 | 描述 | 类型 |
List<Grant> | 包含所有要授权的信息 | 数组 |
owner | 表示 Object 或者 Owner 的拥有者 | Owner 类 |
成员名 | 描述 | 类型 |
grantee | 被授权人的身份信息 | Grantee |
permission | 被授权的权限信息(如可读,可写,可读可写) | Permission |
成员名 | 描述 | 类型 |
id | 拥有者的身份信息 | String |
displayname | 拥有者的名字(目前和 id 相同) | String |
枚举值 | 描述 |
Private | 私有读写(仅有 owner 可以读写) |
PublicRead | 公有读私有写( owner 可以读写, 其他客户可以读) |
PublicReadWrite | 公有读写(即所有人都可以读写) |
public AccessControlList getBucketAcl(String bucketName)throws CosClientException, CosServiceException
// bucket的命名规则为 BucketName-APPID ,此处填写的存储桶名称必须为此格式String bucketName = "examplebucket-1250000000";AccessControlList accessControlList = cosClient.getBucketAcl(bucketName);// 将存储桶权限转换为预设 ACL, 可选值为:Private, PublicRead, PublicReadWriteCannedAccessControlList cannedAccessControlList = accessControlList.getCannedAccessControl();
参数名称 | 描述 | 类型 |
bucketName | Bucket 的命名格式为 BucketName-APPID,详情请参见 命名规范 | String |
// 方法1 (设置自定义策略)public void setObjectAcl(String bucketName, String key, AccessControlList acl)throws CosClientException, CosServiceException// 方法2 (设置预定义策略)public void setObjectAcl(String bucketName, String key, CannedAccessControlList acl)throws CosClientException, CosServiceException// 方法3 (以上两种方法的封装, 包含两种策略设置,如果同时设置以自定定义策略为主)public void setObjectAcl(SetObjectAclRequest setObjectAclRequest)throws CosClientException, CosServiceException;
// 权限信息中身份信息有格式要求,对于主账号与子账号的范式如下:// uin 可以在控制台查看到: https://console.tencentcloud.com/developer// 下面的 root_uin 和 sub_uin 都必须是有效的 UIN 号// 主账号 qcs::cam::uin/<root_uin>:uin/<root_uin> 表示授予主账号 root_uin 这个用户(即前后填的 uin 一样)// 如 qcs::cam::uin/100000000001:uin/100000000001// 子账号 qcs::cam::uin/<root_uin>:uin/<sub_uin> 表示授予 root_uin 的子账号 sub_uin 这个客户// 如 qcs::cam::uin/100000000001:uin/100000000011// 存储桶的命名格式为 BucketName-APPIDString bucketName = "examplebucket-1250000000";String key = "exampleobject";// 设置自定义 ACLAccessControlList acl = new AccessControlList();Owner owner = new Owner();// 设置 owner 的信息, owner 只能是主账号owner.setId("qcs::cam::uin/100000000001:uin/100000000001");acl.setOwner(owner);// 授权给主账号100000000001可读可写权限UinGrantee uinGrantee1 = new UinGrantee("qcs::cam::uin/100000000001:uin/100000000001");acl.grantPermission(uinGrantee1, Permission.FullControl);cosClient.setObjectAcl(bucketName, key, acl);// 设置预定义 ACL// 设置私有读写(Object 的权限默认集成 Bucket的)cosClient.setObjectAcl(bucketName, key, CannedAccessControlList.Private);// 设置公有读私有写cosClient.setObjectAcl(bucketName, key, CannedAccessControlList.PublicRead);// 设置公有读写cosClient.setObjectAcl(bucketName, key, CannedAccessControlList.PublicReadWrite);
参数名称 | 描述 | 类型 |
SetObjectAclRequest | 请求类 | setObjectAclRequest |
Request 成员 | 设置方法 | 描述 | 类型 |
bucketName | 构造函数或 set 方法 | 存储桶的命名格式为 BucketName-APPID,详情请参见 命名规范 | String |
key | 构造函数或 set 方法 | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/picture.jpg 中,对象键为 doc/picture.jpg,详情请参见 对象键 | String |
acl | 构造函数或 set 方法 | 自定义权限策略 | AccessControlList |
cannedAcl | 构造函数或 set 方法 | 预定义策略如公有读、公有读写、私有读 | CannedAccessControlList |
成员名 | 描述 | 类型 |
List<Grant> | 包含所有要授权的信息 | 数组 |
owner | 表示 Object 或者 Owner 的拥有者 | Owner 类 |
成员名 | 描述 | 类型 |
grantee | 被授权人的身份信息 | Grantee |
permission | 被授权的权限信息(例如可读、可写、可读可写) | Permission |
成员名 | 描述 | 类型 |
id | 拥有者的身份信息 | String |
displayname | 拥有者的名字(目前和 ID 相同) | String |
枚举值 | 描述 |
Private | 私有读写(仅有 owner 可以读写) |
PublicRead | 公有读私有写( owner 可以读写, 其他客户可以读) |
PublicReadWrite | 公有读写(即所有人都可以读写) |
public AccessControlList getObjectAcl(String bucketName, String key)throws CosClientException, CosServiceException;
// 存储桶的命名格式为 BucketName-APPIDString bucketName = "examplebucket-1250000000";String key = "exampleobject";AccessControlList accessControlList = cosClient.getObjectAcl(bucketName, key);// 将文件权限转换为预设 ACL, 可选值为:Private, PublicRead, DefaultCannedAccessControlList cannedAccessControlList = accessControlList.getCannedAccessControl();
本页内容是否解决了您的问题?