存储桶操作

最近更新时间:2019-06-23 21:56:27

简介

本文档提供关于存储桶的基本操作和访问控制列表(ACL)的相关 API 概览以及 SDK 示例代码。

基本操作

API 操作名 操作描述
PUT Bucket 创建存储桶 在指定账号下创建一个存储桶
DELETE Bucket 删除存储桶 删除指定账号下的空存储桶

访问控制列表

API 操作名 操作描述
PUT Bucket acl 设置存储桶 ACL 设置指定存储桶访问权限控制列表
GET Bucket acl 查询存储桶 ACL 查询存储桶的访问控制列表

基本操作

创建存储桶

功能说明

在指定账号下创建一个存储桶。

方法原型

cos_status_t *cos_create_bucket(const cos_request_options_t *options, 
                                const cos_string_t *bucket, 
                                cos_acl_e cos_acl, 
                                cos_table_t **resp_headers);

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
cos_acl 允许用户自定义权限。
有效值:COS_ACL_PRIVATE(0),COS_ACL_PUBLIC_READ(1),COS_ACL_PUBLIC_READ_WRITE(2)
默认值:COS_ACL_PRIVATE(0)
Enum
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

cos_pool_t *p = NULL;
int is_cname = 0;
cos_status_t *s = NULL;
cos_request_options_t *options = NULL;
cos_acl_e cos_acl = COS_ACL_PRIVATE;
cos_string_t bucket;
cos_table_t *resp_headers = NULL;

//创建内存池
cos_pool_create(&p, NULL);

//初始化请求选项
options = cos_request_options_create(p);
options->config = cos_config_create(options->pool);
init_test_config(options->config, is_cname);
cos_str_set(&options->config->endpoint, TEST_COS_ENDPOINT);
cos_str_set(&options->config->access_key_id, TEST_ACCESS_KEY_ID);
cos_str_set(&options->config->access_key_secret, TEST_ACCESS_KEY_SECRET);
cos_str_set(&options->config->appid, TEST_APPID);
options->config->is_cname = is_cname;
options->ctl = cos_http_controller_create(options->pool, 0);
cos_str_set(&bucket, TEST_BUCKET_NAME);

//创建存储桶
s = cos_create_bucket(options, &bucket, cos_acl, &resp_headers);
if (cos_status_is_ok(s)) {
        printf("create bucket succeeded\n");
} else {
        printf("create bucket failed\n");
}

//销毁内存池
cos_pool_destroy(p); 

删除存储桶

功能说明

删除指定账号下的空存储桶。

方法原型

cos_status_t *cos_delete_bucket(const cos_request_options_t *options,
                                const cos_string_t *bucket, 
                                cos_table_t **resp_headers);

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

cos_pool_t *p = NULL;
int is_cname = 0;
cos_status_t *s = NULL;
cos_request_options_t *options = NULL;
cos_string_t bucket;
cos_table_t *resp_headers = NULL;

//创建内存池
cos_pool_create(&p, NULL);

//初始化请求选项
options = cos_request_options_create(p);
options->config = cos_config_create(options->pool);
init_test_config(options->config, is_cname);
cos_str_set(&options->config->endpoint, TEST_COS_ENDPOINT);
cos_str_set(&options->config->access_key_id, TEST_ACCESS_KEY_ID);
cos_str_set(&options->config->access_key_secret, TEST_ACCESS_KEY_SECRET);
cos_str_set(&options->config->appid, TEST_APPID);
options->config->is_cname = is_cname;
options->ctl = cos_http_controller_create(options->pool, 0);
cos_str_set(&bucket, TEST_BUCKET_NAME);

//删除存储桶
s = cos_delete_bucket(options, &bucket, &resp_headers);
if (cos_status_is_ok(s)) {
        printf("create bucket succeeded\n");
} else {
        printf("create bucket failed\n");
}

//销毁内存池
cos_pool_destroy(p); 

设置存储桶 ACL

功能说明

设置指定存储桶访问权限控制列表。

方法原型

cos_status_t *cos_put_bucket_acl(const cos_request_options_t *options, 
                                 const cos_string_t *bucket, 
                                 cos_acl_e cos_acl,
                                 const cos_string_t *grant_read,
                                 const cos_string_t *grant_write,
                                 const cos_string_t *grant_full_ctrl,
                                 cos_table_t **resp_headers);

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
cos_acl 允许用户自定义权限。
有效值:COS_ACL_PRIVATE(0),COS_ACL_PUBLIC_READ(1),COS_ACL_PUBLIC_READ_WRITE(2)
默认值:COS_ACL_PRIVATE(0)
Enum
grant_read 读权限授予者 String
grant_write 写权限授予者 String
grant_full_ctrl 读写权限授予者 String
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

cos_pool_t *p = NULL;
int is_cname = 0;
cos_status_t *s = NULL;
cos_request_options_t *options = NULL;
cos_string_t bucket;
cos_table_t *resp_headers = NULL;

//创建内存池
cos_pool_create(&p, NULL);

//初始化请求选项
options = cos_request_options_create(p);
options->config = cos_config_create(options->pool);
init_test_config(options->config, is_cname);
cos_str_set(&options->config->endpoint, TEST_COS_ENDPOINT);
cos_str_set(&options->config->access_key_id, TEST_ACCESS_KEY_ID);
cos_str_set(&options->config->access_key_secret, TEST_ACCESS_KEY_SECRET);
cos_str_set(&options->config->appid, TEST_APPID);
options->config->is_cname = is_cname;
options->ctl = cos_http_controller_create(options->pool, 0);
cos_str_set(&bucket, TEST_BUCKET_NAME);

//设置存储桶 ACL
cos_string_t read;
cos_str_set(&read, "id=\"qcs::cam::uin/100000000001:uin/100000000001\", id=\"qcs::cam::uin/100000000011:uin/100000000011\"");
s = cos_put_bucket_acl(options, &bucket, cos_acl, &read, NULL, NULL, &resp_headers);
if (cos_status_is_ok(s)) {
        printf("put bucket acl succeeded\n");
} else {
        printf("put bucket acl failed\n");
}

//销毁内存池
cos_pool_destroy(p); 

查询存储桶 ACL

功能说明

查询存储桶的访问控制列表。

方法原型

cos_status_t *cos_get_bucket_acl(const cos_request_options_t *options, 
                                 const cos_string_t *bucket, 
                                 cos_acl_params_t *acl_param, 
                                 cos_table_t **resp_headers)

参数说明

参数名称 参数描述 类型
options COS 请求选项 Struct
bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
acl_param 请求操作参数 Struct
owner_id 请求操作返回的存储桶持有者 ID String
owner_name 请求操作返回的存储桶持有者的名称 String
object_list 请求操作返回的被授权者信息与权限信息 Struct
type 请求操作返回的被授权者账户类型 String
id 请求操作返回的被授权者用户 ID String
name 请求操作返回的被授权者用户名称 String
permission 请求操作返回的被授权者权限信息 String
resp_headers 返回 HTTP 响应消息的头域 Struct

返回结果说明

返回结果 描述 类型
code 错误码 Int
error_code 错误码内容 String
error_msg 错误码描述 String
req_id 请求消息 ID String

示例

cos_pool_t *p = NULL;
int is_cname = 0;
cos_status_t *s = NULL;
cos_request_options_t *options = NULL;
cos_string_t bucket;
cos_table_t *resp_headers = NULL;

//创建内存池
cos_pool_create(&p, NULL);

//初始化请求选项
options = cos_request_options_create(p);
options->config = cos_config_create(options->pool);
init_test_config(options->config, is_cname);
cos_str_set(&options->config->endpoint, TEST_COS_ENDPOINT);
cos_str_set(&options->config->access_key_id, TEST_ACCESS_KEY_ID);
cos_str_set(&options->config->access_key_secret, TEST_ACCESS_KEY_SECRET);
cos_str_set(&options->config->appid, TEST_APPID);
options->config->is_cname = is_cname;
options->ctl = cos_http_controller_create(options->pool, 0);
cos_str_set(&bucket, TEST_BUCKET_NAME);

//获取存储桶 ACL
cos_acl_params_t *acl_params = NULL;
acl_params = cos_create_acl_params(p);
s = cos_get_bucket_acl(options, &bucket, acl_params, &resp_headers);
if (cos_status_is_ok(s)) {
        printf("get bucket acl succeeded\n");
        printf("acl owner id:%s, name:%s\n", acl_params->owner_id.data, acl_params->owner_name.data);
        cos_acl_grantee_content_t *acl_content = NULL;
        cos_list_for_each_entry(cos_acl_grantee_content_t, acl_content, &acl_params->grantee_list, node) {
                printf("acl grantee type:%s, id:%s, name:%s, permission:%s\n", acl_content->type.data, acl_content->id.data, acl_content->name.data, acl_content->permission.data);
        }
} else {
        printf("get bucket acl failed\n");
}

//销毁内存池
cos_pool_destroy(p);