Bucket管理
更新时间:2024-12-20
新建Bucket
-
基本流程
- 创建一个BosClient类的实例。
- 调用BosClient.CreateBucket()方法。您需要提供Bucket的名字,即
<Bucketname>
。
- 示例代码
C#
1public void CreateBucket(BosClient client, string bucketName)
2{
3 // 新建一个Bucket
4 client.CreateBucket(bucketName);
5}
注意:由于Bucket的名称在所有区域中是唯一的,所以需要保证bucketName不与其他所有区域上的Bucket名称相同。
-
完整示例
请参考完整示例。
查看Bucket列表
-
基本流程
- 创建一个BosClient类的实例。
- 调用BosClient.ListBuckets()方法获取Bucket列表。
- 遍历Bucket列表并查看相关信息。
- 示例代码
C#
1public void ListBuckets(BosClient client)
2{
3
4 // 获取用户的Bucket列表
5 List<BucketSummary> buckets = client.ListBuckets().Buckets;
6
7 // 遍历Bucket
8 foreach (BucketSummary bucket in buckets)
9 {
10 Console.WriteLine(bucket.Name);
11 }
12
13}
请参考完整示例。
判断Bucket是否存在
-
基本流程
- 创建一个BosClient类的实例。
- 调用BosClient.DoesBucketExist()方法获取结果。
-
示例代码
若用户需要判断某个Bucket是否存在,则如下代码可以做到:
C#
1public void DoesBucketExist(BosClient client, string bucketName)
2{
3
4 // 获取Bucket的存在信息
5 bool exists = client.DoesBucketExist(bucketName); //指定Bucket名称
6
7 // 输出结果
8 if (exists)
9 {
10 Console.WriteLine("Bucket exists");
11 }
12 else
13 {
14 Console.WriteLine("Bucket not exists");
15 }
16}
-
完整示例
请参考完整示例。
删除Bucket
-
基本流程
- 创建一个BosClient类的实例。
- 调用BosClient.DeleteBucket()方法删除Bucket。
- 示例代码
C#
1public void DeleteBucket(BosClient client, string bucketName)
2{
3 // 删除Bucket
4 client.DeleteBucket(bucketName);
5}
注意:如果Bucket不为空(即Bucket中有Object和未完成的三步上传Part存在),则Bucket无法被删除,必须清空Bucket后才能成功删除。
-
完整示例
请参考完整示例。
Bucket权限控制
-
基本流程
- 创建一个BosClient类的实例。
- 调用BosClient.SetBucketAcl()方法。调用该方法时,您需要提供Bucket名称、权限字符串等内容。
- 您也可以构造一个SetBucketAclRequest来调用SetBucketAcl方法,SetBucketAclRequest可以设置指定用户对Bucket的访问权限。
设置Bucket的访问权限
-
示例代码
如下代码将Bucket的权限设置为了private。
C#
1public void SetBucketPrivate(BosClient client, string bucketName)
2{
3 client.SetBucketAcl(bucketName, BosConstants.CannedAcl.Private);
4}
说明:BosConstants.CannedAcl包含三个常量定义:
Private
、PublicRead
、PublicReadWrite
,它们分别对应相关权限。具体内容可以参考《BOS API文档 使用CannedAcl方式的权限控制》。
设置指定用户对Bucket的访问权限
-
示例代码
BOS还可以实现设置指定用户对Bucket的访问权限,参考如下代码实现:
C#
1public void SetBucketAclFromBody(BosClient client, string bucketName)
2{
3 List<Grant> grants = new List<Grant>();
4 List<Grantee> grantee = new List<Grantee>();
5 List<string> permission = new List<string>();
6
7 //授权给特定用户
8 grantee.Add(new Grantee() {Id = "userid1"});
9 grantee.Add(new Grantee() {Id = "userid2"});
10
11 //授权给Everyone
12 grantee.Add(new Grantee() {Id = "*"});
13
14 //设置权限
15 permission.Add(BosConstants.Permission.Read);
16 permission.Add(BosConstants.Permission.Write);
17
18 grants.Add(new Grant() {Grantee = grantee, Permission = permission});
19 client.SetBucketAcl(new SetBucketAclRequest() {BucketName = bucketName, AccessControlList = grants});
20}
注意:
- BosConstants.Permission中包含三个常量定义:
READ
、WRITE
、FULL_CONTROL
,它们分别对应相关权限。具体内容可以参考《BOS API文档 上传ACL文件方式的权限控制》;- C# SDK不支持通过STS方式进行鉴权 。
完整示例
下面示例代码演示了Bucket权限控制的完整过程:
C#
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using BaiduBce;
6using BaiduBce.Auth;
7using BaiduBce.Services.Bos;
8using BaiduBce.Services.Bos.Model;
9
10namespace DotnetSample
11{
12 internal class BucketAclSample
13 {
14 private static void Main(string[] args)
15 {
16 BosClient client = GenerateBosClient();
17 const string bucketName = <BucketName>; //Bucket名称
18
19 // 新建一个Bucket
20 client.CreateBucket(bucketName); //指定Bucket名称
21
22
23 // 设置Bucket为Private
24 client.SetBucketAcl(bucketName, BosConstants.CannedAcl.Private);
25
26 // 设置Bucket为PublicRead
27 client.SetBucketAcl(bucketName, BosConstants.CannedAcl.PublicRead);
28
29 List<Grant> grants = new List<Grant>();
30 List<Grantee> grantee = new List<Grantee>();
31 List<string> permission = new List<string>();
32
33 //授权给特定用户
34 grantee.Add(new Grantee() { Id = "userid1" });
35 grantee.Add(new Grantee() { Id = "userid2" });
36 //授权给Everyone
37 grantee.Add(new Grantee() { Id = "*" });
38
39 //设置权限
40 permission.Add(BosConstants.Permission.Read);
41 permission.Add(BosConstants.Permission.Write);
42
43 grants.Add(new Grant() { Grantee = grantee, Permission = permission });
44 client.SetBucketAcl(new SetBucketAclRequest() { BucketName = bucketName, AccessControlList = grants });
45
46 }
47
48 private static BosClient GenerateBosClient()
49 {
50 const string accessKeyId = <AccessKeyID>; // 您的Access Key ID
51 const string secretAccessKey = <SecretAccessKey>; // 您的Secret Access Key
52 const string endpoint = "https://bj.bcebos.com"; // 指定BOS服务域名
53
54 // 初始化一个BosClient
55 BceClientConfiguration config = new BceClientConfiguration();
56 config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
57 config.Endpoint = endpoint;
58
59 return new BosClient(config);
60 }
61 }
62}
完整示例
下面示例代码演示了创建Bucket,查看Bucket,判断Bucket是否存在,删除Bucket的完整过程。
C#
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using BaiduBce;
6using BaiduBce.Auth;
7using BaiduBce.Services.Bos;
8using BaiduBce.Services.Bos.Model;
9
10namespace DotnetSample
11{
12 internal class BucketSample
13 {
14 private static void Main(string[] args)
15 {
16 BosClient client = GenerateBosClient();
17 const string bucketName = <BucketName>; //指定Bucket名称
18
19 // 新建一个Bucket
20 client.CreateBucket(bucketName);
21
22 // 获取用户的Bucket列表
23 List<BucketSummary> buckets = client.ListBuckets().Buckets;
24
25 // 遍历Bucket
26 foreach (BucketSummary bucket in buckets)
27 {
28 Console.WriteLine(bucket.Name);
29 }
30
31 // 获取Bucket的存在信息
32 bool exists = client.DoesBucketExist(bucketName);
33
34 // 输出结果
35 if (exists)
36 {
37 Console.WriteLine("Bucket exists");
38 }
39 else
40 {
41 Console.WriteLine("Bucket not exists");
42 }
43
44 // 删除Bucket
45 client.DeleteBucket(bucketName);
46
47 // 再次获取Bucket的存在信息
48 exists = client.DoesBucketExist(bucketName);
49
50 // 输出结果
51 if (exists)
52 {
53 Console.WriteLine("Bucket exists");
54 }
55 else
56 {
57 Console.WriteLine("Bucket not exists");
58 }
59 Console.ReadKey();
60 }
61
62 private static BosClient GenerateBosClient()
63 {
64 const string accessKeyId = <AccessKeyID>; // 您的Access Key ID
65 const string secretAccessKey = <SecretAccessKey>; // 您的Secret Access Key
66 const string endpoint = "https://bj.bcebos.com"; // 指定BOS服务域名
67
68 // 初始化一个BosClient
69 BceClientConfiguration config = new BceClientConfiguration();
70 config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
71 config.Endpoint = endpoint;
72
73 return new BosClient(config);
74 }
75 }
76}