Bucket管理
更新时间:2022-06-16
新建Bucket
-
基本流程
- 创建一个BOSClient类的实例。
- 调用BOSClient.CreateBucket()方法。您需要提供Bucket的名字,即
<Bucketname>
。
- 示例代码
public void CreateBucket(BosClient client, string bucketName)
{
// 新建一个Bucket
client.CreateBucket(bucketName);
}
注意:由于Bucket的名称在所有区域中是唯一的,所以需要保证bucketName不与其他所有区域上的Bucket名称相同。
-
完整示例
请参考完整示例。
查看Bucket列表
-
基本流程
- 创建一个BOSClient类的实例。
- 调用BOSClient.ListBuckets()方法获取Bucket列表。
- 遍历Bucket列表并查看相关信息。
- 示例代码
public void ListBuckets(BosClient client)
{
// 获取用户的Bucket列表
List<BucketSummary> buckets = client.ListBuckets().Buckets;
// 遍历Bucket
foreach (BucketSummary bucket in buckets)
{
Console.WriteLine(bucket.Name);
}
}
请参考完整示例。
判断Bucket是否存在
-
基本流程
- 创建一个BOSClient类的实例。
- 调用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
-
基本流程
- 创建一个BOSClient类的实例。
- 调用BOSClient.DeleteBucket()方法删除Bucket。
- 示例代码
public void DeleteBucket(BosClient client, string bucketName)
{
// 删除Bucket
client.DeleteBucket(bucketName);
}
注意:如果Bucket不为空(即Bucket中有Object和未完成的三步上传Part存在),则Bucket无法被删除,必须清空Bucket后才能成功删除。
-
完整示例
请参考完整示例。
Bucket权限控制
-
基本流程
- 创建一个BOSClient类的实例。
- 调用BOSClient.SetBucketAcl()方法。调用该方法时,您需要提供Bucket名称、权限字符串等内容。
- 您也可以构造一个SetBucketAclRequest来调用SetBucketAcl方法,SetBucketAclRequest可以设置指定用户对Bucket的访问权限。
设置Bucket的访问权限
-
示例代码
如下代码将Bucket的权限设置为了private。
public void SetBucketPrivate(BosClient client, string bucketName)
{
client.SetBucketAcl(bucketName, BosConstants.CannedAcl.Private);
}
说明:BosConstants.CannedAcl包含三个常量定义:
Private
、PublicRead
、PublicReadWrite
,它们分别对应相关权限。具体内容可以参考《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中包含三个常量定义:
READ
、WRITE
、FULL_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 = "https://bj.bcebos.com"; // 指定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 = "https://bj.bcebos.com"; // 指定BOS服务域名
// 初始化一个BosClient
BceClientConfiguration config = new BceClientConfiguration();
config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
config.Endpoint = endpoint;
return new BosClient(config);
}
}
}