Bucket管理

Bucket既是BOS上的命名空间,也是计费、权限控制、日志记录等高级功能的管理实体。

  • Bucket名称在所有区域中具有全局唯一性,且不能修改。

    说明:
    百度智能云目前开放了多区域支持,请参考区域选择说明

    目前支持“华北-北京”、“华南-广州”和“华东-苏州”三个区域。北京区域:http://bj.bcebos.com,广州区域:http://gz.bcebos.com,苏州区域:http://su.bcebos.com

  • 存储在BOS上的每个Object都必须包含在一个Bucket中。

  • 一个用户最多可创建100个Bucket,但每个Bucket中存放的Object的数量和大小总和没有限制,用户不需要考虑数据的可扩展性。

Bucket权限管理

设置Bucket的访问权限

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

int setBucketPrivate (Client& client, const std::string& bucketName) {
    PutBucketAclRequest request(bucketName, "private");//第二个参数为CannedACL
    PutBucketAclResponse response;
    int ret = client.put_bucket_acl(request, &response);
    //client error
    if (ret != 0) {
        return ret;
    }
    //response errro
    if (response.is_fail()) {
        printf("error-message:%s\n", response.error().message().c_str());
        return response.status_code();
    }
    return 0;
}

CannedACL包含三个值: privatepublic-readpublic-read-write ,它们分别对应相关权限。具体内容可以参考BOS API文档 使用CannedAcl方式的权限控制

查看Bucket的权限

如下代码可以查看Bucket的权限:

GetBucketAclRequest("bucketName");
GetBucketAclResponse response;
int ret = client.get_bucket_acl(request, &response);
if (response.is_fail()) {
        printf("error-message:%s\n", response.error().message().c_str());
        return;
}
std::string owner_id = reponse.owner().id;
std::cout << "owner_id: " << owner_id << std::endl;
for (const Grant& grant : response.access_control_list()) {//c++11
    do_something(grant);
}

get_bucket_acl方法返回的response中可供调用的参数有:

参数 类型 说明
owner Owner(string) Bucket owner id
access_control_list vector\ 保存acl的容器
+grantee vector\ 被授权人ID
+permission vector\ 标识被授权人的权限

查看Bucket所属的区域

Bucket Location即Bucket Region,百度智能云支持的各region详细信息可参见区域选择说明

如下代码可以获取该Bucket的Location信息:

Client client (ak, sk, config);

ListBucketsRequest listBucketsRequest;
ListBucketsResponse listBucketsResponse;
int ret = client.list_buckets(listBucketsRequest, &