所有文档

          对象存储 BOS

          Bucket管理

          新建Bucket

          • 基本流程

            1. 创建一个BOSClient类的实例。
            2. 调用BOSClient.CreateBucket()方法。您需要提供Bucket的名字,即<Bucketname>
          • 示例代码
          public void CreateBucket(BosClient client, string bucketName)
          {
              // 新建一个Bucket
              client.CreateBucket(bucketName); 
          }                            

          注意:由于Bucket的名称在所有区域中是唯一的,所以需要保证bucketName不与其他所有区域上的Bucket名称相同。

          查看Bucket列表

          • 基本流程

            1. 创建一个BOSClient类的实例。
            2. 调用BOSClient.ListBuckets()方法获取Bucket列表。
            3. 遍历Bucket列表并查看相关信息。
          • 示例代码
          public void ListBuckets(BosClient client)
          {
          
              // 获取用户的Bucket列表
              List<BucketSummary> buckets = client.ListBuckets().Buckets;
          
              // 遍历Bucket
              foreach (BucketSummary bucket in buckets)
              {
                  Console.WriteLine(bucket.Name);
              }
          
          }

          请参考完整示例

          判断Bucket是否存在

          • 基本流程

            1. 创建一个BOSClient类的实例。
            2. 调用BOSClient.DoesBucketExist()方法获取结果。
          • 示例代码

            若用户需要判断某个Bucket是否存在,则如下代码可以做到:

          public void DoesBucketExist(BosClient client, string bucketName)
          {
          
              // 获取Bucket的存在信息
              bool exists = client.DoesBucketExist(bucketName); //指定Bucket名称
          
              // 输出结果
              if (exists)
              {
                  Console.WriteLine("Bucket exists");
              }
              else
              {
                  Console.WriteLine("Bucket not exists");
              }
          }

          删除Bucket

          • 基本流程

            1. 创建一个BOSClient类的实例。
            2. 调用BOSClient.DeleteBucket()方法删除Bucket。
          • 示例代码
          public void DeleteBucket(BosClient client, string bucketName)
          {
              // 删除Bucket
              client.DeleteBucket(bucketName); 
          }

          注意:如果Bucket不为空(即Bucket中有Object和未完成的三步上传Part存在),则Bucket无法被删除,必须清空Bucket后才能成功删除。

          Bucket权限控制

          • 基本流程

            1. 创建一个BOSClient类的实例。
            2. 调用BOSClient.SetBucketAcl()方法。调用该方法时,您需要提供Bucket名称、权限字符串等内容。
            3. 您也可以构造一个SetBucketAclRequest来调用SetBucketAcl方法,SetBucketAclRequest可以设置指定用户对Bucket的访问权限。

          设置Bucket的访问权限

          • 示例代码

            如下代码将Bucket的权限设置为了private。

          public void SetBucketPrivate(BosClient client, string bucketName)
          {
              client.SetBucketAcl(bucketName, BosConstants.CannedAcl.Private);
          }

          说明:BosConstants.CannedAcl包含三个常量定义: PrivatePublicReadPublicReadWrite ,它们分别对应相关权限。具体内容可以参考《BOS API文档 使用CannedAcl方式的权限控制》。

          设置指定用户对Bucket的访问权限

          • 示例代码

            BOS还可以实现设置指定用户对Bucket的访问权限,参考如下代码实现:

          public void SetBucketAclFromBody(BosClient client, string bucketName)
          {
              List<Grant> grants = new List<Grant>();
              List<Grantee> grantee = new List<Grantee>();
              List<string> permission = new List<string>();
          
              //授权给特定用户
              grantee.Add(new Grantee() {Id = "userid1"});
              grantee.Add(new Grantee() {Id = "userid2"});
          
              //授权给Everyone
              grantee.Add(new Grantee() {Id = "*"});
          
              //设置权限
              permission.Add(BosConstants.Permission.Read);
              permission.Add(BosConstants.Permission.Write);
          
              grants.Add(new Grant() {Grantee = grantee, Permission = permission});
              client.SetBucketAcl(new SetBucketAclRequest() {BucketName = bucketName, AccessControlList = grants});
          }

          注意:

          • BosConstants.Permission中包含三个常量定义:READWRITEFULL_CONTROL,它们分别对应相关权限。具体内容可以参考《BOS API文档 上传ACL文件方式的权限控制》;
          • C# SDK不支持通过STS方式进行鉴权 。

          完整示例

          下面示例代码演示了Bucket权限控制的完整过程:

          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using BaiduBce;
          using BaiduBce.Auth;
          using BaiduBce.Services.Bos;
          using BaiduBce.Services.Bos.Model;
          
          namespace DotnetSample
          {
              internal class BucketAclSample
              {
                  private static void Main(string[] args)
                  {
                      BosClient client = GenerateBosClient();
                      const string bucketName = <BucketName>; //Bucket名称
          
                      // 新建一个Bucket
                      client.CreateBucket(bucketName); //指定Bucket名称
          
          
                      // 设置Bucket为Private
                      client.SetBucketAcl(bucketName, BosConstants.CannedAcl.Private);
          
                      // 设置Bucket为PublicRead
                      client.SetBucketAcl(bucketName, BosConstants.CannedAcl.PublicRead);
          
                      List<Grant> grants = new List<Grant>();
                      List<Grantee> grantee = new List<Grantee>();
                      List<string> permission = new List<string>();
          
                      //授权给特定用户
                      grantee.Add(new Grantee() { Id = "userid1" });
                      grantee.Add(new Grantee() { Id = "userid2" });
                      //授权给Everyone
                      grantee.Add(new Grantee() { Id = "*" });
          
                      //设置权限
                      permission.Add(BosConstants.Permission.Read);
                      permission.Add(BosConstants.Permission.Write);
          
                      grants.Add(new Grant() { Grantee = grantee, Permission = permission });
                      client.SetBucketAcl(new SetBucketAclRequest() { BucketName = bucketName, AccessControlList = grants });
          
                  }
          
                  private static BosClient GenerateBosClient()
                  {
                      const string accessKeyId = <AccessKeyID>;        // 您的Access Key ID
                      const string secretAccessKey = <SecretAccessKey>; // 您的Secret Access Key
                      const string endpoint = <EndPoint>;       // 指定BOS服务域名
          
                      // 初始化一个BosClient
                      BceClientConfiguration config = new BceClientConfiguration();
                      config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
                      config.Endpoint = endpoint;
          
                      return new BosClient(config);
                  }
              }
          }

          完整示例

          下面示例代码演示了创建Bucket,查看Bucket,判断Bucket是否存在,删除Bucket的完整过程。

          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using BaiduBce;
          using BaiduBce.Auth;
          using BaiduBce.Services.Bos;
          using BaiduBce.Services.Bos.Model;
          
          namespace DotnetSample
          {
              internal class BucketSample
              {
                  private static void Main(string[] args)
                  {
                      BosClient client = GenerateBosClient();
                      const string bucketName = <BucketName>;    //指定Bucket名称
          
                      // 新建一个Bucket
                      client.CreateBucket(bucketName); 
          
                      // 获取用户的Bucket列表
                      List<BucketSummary> buckets = client.ListBuckets().Buckets;
          
                      // 遍历Bucket
                      foreach (BucketSummary bucket in buckets)
                      {
                          Console.WriteLine(bucket.Name);
                      }
          
                      // 获取Bucket的存在信息
                      bool exists = client.DoesBucketExist(bucketName); 
          
                      // 输出结果
                      if (exists)
                      {
                          Console.WriteLine("Bucket exists");
                      }
                      else
                      {
                          Console.WriteLine("Bucket not exists");
                      }
          
                      // 删除Bucket
                      client.DeleteBucket(bucketName); 
          
                      // 再次获取Bucket的存在信息
                      exists = client.DoesBucketExist(bucketName); 
          
                      // 输出结果
                      if (exists)
                      {
                          Console.WriteLine("Bucket exists");
                      }
                      else
                      {
                          Console.WriteLine("Bucket not exists");
                      }
                      Console.ReadKey();
                  }
          
                  private static BosClient GenerateBosClient()
                  {
                      const string accessKeyId = <AccessKeyID>; // 您的Access Key ID
                      const string secretAccessKey = <SecretAccessKey>; // 您的Secret Access Key
                      const string endpoint = <EndPoint>; // 指定BOS服务域名
          
                      // 初始化一个BosClient
                      BceClientConfiguration config = new BceClientConfiguration();
                      config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
                      config.Endpoint = endpoint;
          
                      return new BosClient(config);
                  }
              }
          }
          上一篇
          初始化
          下一篇
          文件管理