简介
本文档提供关于存储桶、对象的访问控制列表(ACL)的相关 API 概览以及 SDK 示例代码。
相关示例
功能名称 | 描述 | 示例代码 |
设置存储桶 ACL | 设置指定存储桶的访问权限控制列表(ACL) | |
查询存储桶 ACL | 查询指定存储桶的访问权限控制列表(ACL) | |
设置对象 ACL | 设置存储桶中某个对象的访问控制列表 | |
查询对象 ACL | 查询对象的访问控制列表 |
前期准备:初始化 COS 服务实例
public class AccessManageModel { private CosXml cosXml; //将服务用户设置成数据成员 // 初始化COS服务实例 private void InitCosXml() { string region = Environment.GetEnvironmentVariable("COS_REGION"); CosXmlConfig config = new CosXmlConfig.Builder() .SetRegion(region) // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 .Build(); string secretId = Environment.GetEnvironmentVariable("SECRET_ID"); // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi string secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond); this.cosXml = new CosXmlServer(config, qCloudCredentialProvider); } }
使用案例
设置存储桶 ACL
设置指定存储桶的访问权限控制列表(ACL)。
public void PutBucketAcl() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; PutBucketACLRequest request = new PutBucketACLRequest(bucket); //设置私有读写权限 request.SetCosACL(CosACL.Private); //授予113197593账号读权限 COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount(); readAccount.AddGrantAccount("113197593", "113197593"); request.SetXCosGrantRead(readAccount); //执行请求 PutBucketACLResult result = cosXml.PutBucketACL(request); //请求成功 Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
查询存储桶 ACL
查询指定存储桶的访问权限控制列表(ACL)。
public void GetBucketAcl() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; GetBucketACLRequest request = new GetBucketACLRequest(bucket); //执行请求 GetBucketACLResult result = cosXml.GetBucketACL(request); //存储桶的 ACL 信息 AccessControlPolicy acl = result.accessControlPolicy; Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
设置对象 ACL
设置存储桶中某个对象的访问控制列表(ACL)。
public void PutObjectAcl() { // 因为存储桶 ACL 最多1000条,为避免 ACL 达到上限,非必须情况不建议给对象单独设置 ACL(对象默认继承 bucket 权限). try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; string key = "exampleobject"; //对象键 PutObjectACLRequest request = new PutObjectACLRequest(bucket, key); //设置私有读写权限 request.SetCosACL(CosACL.Private); //授予1131975903账号读权限 COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount(); readAccount.AddGrantAccount("1131975903", "1131975903"); request.SetXCosGrantRead(readAccount); //执行请求 PutObjectACLResult result = cosXml.PutObjectACL(request); //请求成功 Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
查询对象 ACL
查询对象的访问控制列表。
public void GetObjectAcl() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; string key = "exampleobject"; //对象键 GetObjectACLRequest request = new GetObjectACLRequest(bucket, key); //执行请求 GetObjectACLResult result = cosXml.GetObjectACL(request); //对象的 ACL 信息 AccessControlPolicy acl = result.accessControlPolicy; Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
API 操作
关于设置存储桶 ACL 的 API 接口说明,请参见 PUT Bucket acl 文档。
关于查询存储桶 ACL 的 API 接口说明,请参见 GET Bucket acl 文档。
关于设置对象 ACL 的 API 接口说明,请参见 PUT Object acl 文档。
关于查询对象 ACL 的 API 接口说明,请参见 GET Object acl 文档。