存储桶操作

最后更新时间:2019-12-24 18:21:13

    简介

    本文档提供关于存储桶的基本操作和访问控制列表(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); 

    Was this page helpful?

    本页内容是否解决了您的问题?

    • 完全没帮助
    • 文档较差
    • 文档一般
    • 文档不错
    • 文档很好
    反馈
    帮助