最近更新时间:2023-01-11 10:41:08
object的访问权限说明可以参考: ACL(访问控制列表)。
/**
*通过预设的ACL设置object的访问权限,预设的ACL包括:private:私有。public-read:为所有用户授予read权限。
*/
public void putObjectAclWithCannedAcl(){
// yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
String endpoint = "yourEndpoint";
// 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建Ks3ClientConfig 实例。
Ks3ClientConfig config = new Ks3ClientConfig();
// 设置域名
config.setEndpoint(endpoint);
// 创建Ks3Client实例
Ks3 client = new Ks3Client(accessKeyId, accessKeySecret, config);
// 创建修改acl请求
PutObjectACLRequest request = new PutObjectACLRequest("<bucket名称>","<object名称>");
//设为私有
request.setCannedAcl(CannedAccessControlList.Private);
//设为公开读
//request.setCannedAcl(CannedAccessControlList.PublicRead);
client.putObjectACL(request);
}
/**
*自定义文件访问权限
*/
public void putObjectAclWithAcl(){
// yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
String endpoint = "yourEndpoint";
// 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建Ks3ClientConfig 实例。
Ks3ClientConfig config = new Ks3ClientConfig();
// 设置域名
config.setEndpoint(endpoint);
// 创建Ks3Client实例
Ks3 client = new Ks3Client(accessKeyId, accessKeySecret, config);
// 创建修改acl请求
PutObjectACLRequest request = new PutObjectACLRequest("<bucket名称>","<objectkey>");
// 创建acl实例
AccessControlList acl = new AccessControlList();
//设置用户id为12345678的用户对object的读权限
Grant grant1 = new Grant();
grant1.setGrantee(new GranteeId("12345678"));
grant1.setPermission(Permission.Read);
// 添加acl
acl.addGrant(grant1);
//设置用户id为123456789的用户对object完全控制
Grant grant2 = new Grant();
grant2.setGrantee(new GranteeId("123456789"));
grant2.setPermission(Permission.FullControl);
acl.addGrant(grant2);
//设置用户id为12345678910的用户对object的写权限
Grant grant3 = new Grant();
grant3.setGrantee(new GranteeId("12345678910"));
grant3.setPermission(Permission.Write);
acl.addGrant(grant3);
// 设置acl
request.setAccessControlList(acl);
// 发起请求
client.putObjectACL(request);
}
public AccessControlPolicy getObjectAcl(){
// yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
String endpoint = "yourEndpoint";
// 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建Ks3ClientConfig 实例。
Ks3ClientConfig config = new Ks3ClientConfig();
// 设置域名
config.setEndpoint(endpoint);
// 创建Ks3Client实例
Ks3 client = new Ks3Client(accessKeyId, accessKeySecret, config);
/**
* 获取 <bucket名称>这个bucket下<object key>的权限控制信息
*/
AccessControlPolicy policy = client.getObjectACL("<bucket名称>","<object key>");
return policy;
}
说明:AccessControlPolicy中有public CannedAccessControlList getCannedAccessControlList()方法可以从ACL中提取出预设ACL来。
纯净模式