存储桶管理

最后更新时间:2019-08-15 19:40:43

    简介

    本文档提供关于跨域访问、生命周期、版本控制、跨地域复制相关的 API 概览以及 SDK 示例代码。

    跨域访问

    API 操作名 操作描述
    PUT Bucket cors 设置跨域配置 设置存储桶的跨域访问权限
    GET Bucket cors 查询跨域配置 查询存储桶的跨域访问配置信息
    DELETE Bucket cors 删除跨域配置 删除存储桶的跨域访问配置信息

    生命周期

    API 操作名 操作描述
    PUT Bucket lifecycle 设置生命周期 设置存储桶的生命周期管理的配置
    GET Bucket lifecycle 查询生命周期 查询存储桶生命周期管理的配置
    DELETE Bucket lifecycle 删除生命周期 删除存储桶生命周期管理的配置

    版本控制

    API 操作名 操作描述
    PUT Bucket versioning 设置版本控制 设置存储桶的版本控制功能
    GET Bucket versioning 查询版本控制 查询存储桶的版本控制信息

    跨地域复制

    API 操作名 操作描述
    PUT Bucket replication 设置跨地域复制 设置存储桶的跨地域复制规则
    GET Bucket replication 查询跨地域复制 查询存储桶的跨地域复制规则
    DELETE Bucket replication 删除跨地域复制 删除存储桶的跨地域复制规则

    跨域访问

    设置跨域配置

    功能说明

    设置存储桶的跨域访问权限。

    方法原型

    cos_status_t *cos_put_bucket_cors(const cos_request_options_t *options,
                                      const cos_string_t *bucket, 
                                      cos_list_t *cors_rule_list, 
                                      cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 String
    cors_rule_list 存储桶跨域配置信息 Struct
    id 配置规则 ID String
    allowed_origin 允许的访问来源,支持通配符* String
    allowed_method 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE String
    allowed_header 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符* String
    expose_header 设置浏览器可以接收到的来自服务器端的自定义头部信息 String
    max_age_seconds 设置 OPTIONS 请求得到结果的有效期 Int
    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);
    
    //设置跨域配置信息
    cos_list_t rule_list;
    cos_list_init(&rule_list);
    cos_cors_rule_content_t *rule_content = NULL;
    
    rule_content = cos_create_cors_rule_content(p);
    cos_str_set(&rule_content->id, "testrule1");
    cos_str_set(&rule_content->allowed_origin, "http://www.qq1.com");
    cos_str_set(&rule_content->allowed_method, "GET");
    cos_str_set(&rule_content->allowed_header, "*");
    cos_str_set(&rule_content->expose_header, "xxx");
    rule_content->max_age_seconds = 3600;
    cos_list_add_tail(&rule_content->node, &rule_list);
    
    rule_content = cos_create_cors_rule_content(p);
    cos_str_set(&rule_content->id, "testrule2");
    cos_str_set(&rule_content->allowed_origin, "http://www.qq2.com");
    cos_str_set(&rule_content->allowed_method, "GET");
    cos_str_set(&rule_content->allowed_header, "*");
    cos_str_set(&rule_content->expose_header, "yyy");
    rule_content->max_age_seconds = 7200;
    cos_list_add_tail(&rule_content->node, &rule_list);
    
    rule_content = cos_create_cors_rule_content(p);
    cos_str_set(&rule_content->id, "testrule3");
    cos_str_set(&rule_content->allowed_origin, "http://www.qq3.com");
    cos_str_set(&rule_content->allowed_method, "GET");
    cos_str_set(&rule_content->allowed_header, "*");
    cos_str_set(&rule_content->expose_header, "zzz");
    rule_content->max_age_seconds = 60;
    cos_list_add_tail(&rule_content->node, &rule_list);
    
    //设置跨域配置
    s = cos_put_bucket_cors(options, &bucket, &rule_list, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("put bucket cors succeeded\n");
    } else {
            printf("put bucket cors failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    查询跨域配置

    功能说明

    查询存储桶的跨域访问配置信息。

    方法原型

    cos_status_t *cos_get_bucket_cors(const cos_request_options_t *options,
                                      const cos_string_t *bucket, 
                                      cos_list_t *cors_rule_list, 
                                      cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
    cors_rule_list 存储桶跨域配置信息 Struct
    id 配置规则 ID String
    allowed_origin 允许的访问来源,支持通配符* String
    allowed_method 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE String
    allowed_header 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符* String
    expose_header 设置浏览器可以接收到的来自服务器端的自定义头部信息 String
    max_age_seconds 设置 OPTIONS 请求得到结果的有效期 Int
    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);
    
    //获取跨域配置
    cos_list_t rule_list_ret;
    cos_list_init(&rule_list_ret);
    s = cos_get_bucket_cors(options, &bucket, &rule_list_ret, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("get bucket cors succeeded\n");
            cos_cors_rule_content_t *content = NULL;
            cos_list_for_each_entry(cos_cors_rule_content_t, content, &rule_list_ret, node) {
                    printf("cors id:%s, allowed_origin:%s, allowed_method:%s, allowed_header:%s, expose_header:%s, max_age_seconds:%d\n",
                            content->id.data, content->allowed_origin.data, content->allowed_method.data, content->allowed_header.data, content->expose_header.data, content->max_age_seconds);
            }
    } else {
            printf("get bucket cors failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    删除跨域配置

    功能说明

    删除存储桶的跨域访问配置信息。

    方法原型

    cos_status_t *cos_delete_bucket_cors(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_cors(options, &bucket, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("delete bucket cors succeeded\n");
    } else {
            printf("delete bucket cors failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    生命周期

    设置生命周期

    功能说明

    设置存储桶生命周期管理的配置。

    方法原型

    cos_status_t *cos_put_bucket_lifecycle(const cos_request_options_t *options,
                                           const cos_string_t *bucket, 
                                           cos_list_t *lifecycle_rule_list, 
                                           cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 String
    lifecycle_rule_list 生命周期规则信息 Struct
    id 生命周期规则 ID String
    prefix 指定规则所适用的前缀 String
    status 指明规则是否启用,枚举值:Enabled,Disabled String
    expire 规则过期属性 Struct
    days 指明多少天后执行删除操作或转换操作;指明分块上传开始后多少天内必须完成上传 Int
    date 指明在何时执行删除操作或转换操作 String
    transition 规则转换属性,对象何时转换被转换为 Standard_IA、Archive Struct
    storage_class 指定 Object 转储到的目标存储类型,枚举值:Standard_IA、Archive String
    abort 设置允许分块上传保持运行的最长时间 Struct
    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);
    
    //设置生命周期信息
    cos_list_t rule_list;
    cos_list_init(&rule_list);
    cos_lifecycle_rule_content_t *rule_content = NULL;
    
    rule_content = cos_create_lifecycle_rule_content(p);
    cos_str_set(&rule_content->id, "testrule1");
    cos_str_set(&rule_content->prefix, "abc/");
    cos_str_set(&rule_content->status, "Enabled");
    rule_content->expire.days = 60;
    cos_list_add_tail(&rule_content->node, &rule_list);
    
    rule_content = cos_create_lifecycle_rule_content(p);
    cos_str_set(&rule_content->id, "testrule2");
    cos_str_set(&rule_content->prefix, "efg/");
    cos_str_set(&rule_content->status, "Disabled");
    cos_str_set(&rule_content->transition.storage_class, "Standard_IA");
    rule_content->transition.days = 30;
    cos_list_add_tail(&rule_content->node, &rule_list);
    
    rule_content = cos_create_lifecycle_rule_content(p);
    cos_str_set(&rule_content->id, "testrule3");
    cos_str_set(&rule_content->prefix, "xxx/");
    cos_str_set(&rule_content->status, "Enabled");
    rule_content->abort.days = 1;
    cos_list_add_tail(&rule_content->node, &rule_list);
    
    //设置生命周期
    s = cos_put_bucket_lifecycle(options, &bucket, &rule_list, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("put bucket lifecycle succeeded\n");
    } else {
            printf("put bucket lifecycle failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    查询生命周期

    功能说明

    查询存储桶生命周期管理的配置。

    方法原型

    cos_status_t *cos_get_bucket_lifecycle(const cos_request_options_t *options,
                                           const cos_string_t *bucket, 
                                           cos_list_t *lifecycle_rule_list, 
                                           cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 String
    lifecycle_rule_list 生命周期规则信息 Struct
    id 生命周期规则 ID String
    prefix 规则所适用的前缀 String
    status 规则是否启用,枚举值:Enabled,Disabled String
    expire 规则过期属性 Struct
    days 指明多少天后执行删除操作 Int
    date 指明在何时执行删除操作 String
    transition 规则转换属性,对象何时转换被转换为 Standard_IA、Archive Struct
    days 指明多少天后执行转换操作 Int
    date 指明在何时执行转换操作 String
    storage_class 指定 Object 转储到的目标存储类型,枚举值:Standard_IA、Archive String
    abort 设置允许分块上传保持运行的最长时间 Struct
    days 指明分块上传开始后多少天内必须完成上传 Int
    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);
    
    //查询生命周期
    cos_list_t rule_list_ret;
    cos_list_init(&rule_list_ret);
    s = cos_get_bucket_lifecycle(options, &bucket, &rule_list_ret, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("get bucket lifecycle succeeded\n");
    } else {
            printf("get bucket lifecycle failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    删除生命周期

    功能说明

    删除生命周期接口用来删除存储桶的生命周期规则。

    方法原型

    cos_status_t *cos_delete_bucket_lifecycle(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_lifecycle(options, &bucket, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("delete bucket lifecycle succeeded\n");
    } else {
            printf("delete bucket lifecycle failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    版本控制

    设置版本控制

    功能说明

    设置指定存储桶的版本控制功能。

    方法原型

    cos_status_t *cos_put_bucket_versioning(const cos_request_options_t *options,
                                            const cos_string_t *bucket, 
                                            cos_versioning_content_t *versioning, 
                                            cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
    versioning 版本控制请求操作参数 Struct
    status 版本是否开启,枚举值:Suspended,Enabled 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);
    
    //put bucket versioning
    cos_versioning_content_t *versioning = NULL;
    versioning = cos_create_versioning_content(p);
    cos_str_set(&versioning->status, "Enabled");
    s = cos_put_bucket_versioning(options, &bucket, versioning, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("put bucket versioning succeeded\n");
    } else {
            printf("put bucket versioning failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    暂停版本控制

    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);
    
    //put bucket versioning
    cos_versioning_content_t *versioning = NULL;
    versioning = cos_create_versioning_content(p);
    cos_str_set(&versioning->status, "Suspended");
    s = cos_put_bucket_versioning(options, &bucket, versioning, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("put bucket versioning succeeded\n");
    } else {
            printf("put bucket versioning failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    查询版本控制

    功能说明

    查询指定存储桶的版本控制信息。

    方法原型

    cos_status_t *cos_get_bucket_versioning(const cos_request_options_t *options,
                                            const cos_string_t *bucket, 
                                            cos_versioning_content_t *versioning, 
                                            cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
    versioning 版本控制请求操作参数 Struct
    status 版本是否开启,枚举值:Suspended,Enabled 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);
    
    //get bucket versioning
    cos_versioning_content_t *versioning = NULL;
    versioning = cos_create_versioning_content(p);
    s = cos_get_bucket_versioning(options, &bucket, versioning, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("put bucket versioning succeeded\n");
            printf("bucket versioning status: %s\n", versioning->status.data);
    } else {
            printf("put bucket versioning failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    跨地域复制

    设置跨地域复制

    功能说明

    设置指定存储桶的跨地域复制规则。

    方法原型

    cos_status_t *cos_put_bucket_replication(const cos_request_options_t *options,
                                             const cos_string_t *bucket, 
                                             cos_replication_params_t *replication_param, 
                                             cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项。 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
    replication_param 跨地域复制请求操作参数 Struct
    role 操作者账户信息 String
    rule_list 跨地域复制规则配置信息 Struct
    id 用来标注具体规则的名称 String
    status 标识规则是否生效,枚举值:Enabled,Disabled String
    prefix 匹配前缀。不可重叠,重叠返回错误 String
    dst_bucket 目的存储桶标识,格式为:资源标识符qcs::cos:[region]::[bucketname-AppId] String
    storage_class 存储类别,枚举值:Standard,Standard_IA
    默认值原存储桶级别
    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);
    
    //设置跨地域复制规则
    cos_replication_params_t *replication_param = NULL;
    replication_param = cos_create_replication_params(p);
    cos_str_set(&replication_param->role, "qcs::cam::uin/100000616666:uin/100000616666");
    
    cos_replication_rule_content_t *rule = NULL;
    rule = cos_create_replication_rule_content(p);
    cos_str_set(&rule->id, "Rule_01");
    cos_str_set(&rule->status, "Enabled");
    cos_str_set(&rule->prefix, "test1");
    cos_str_set(&rule->dst_bucket, "qcs::cos:ap-shanghai::replicationtest-1253686666");
    cos_list_add_tail(&rule->node, &replication_param->rule_list);
    
    rule = cos_create_replication_rule_content(p);
    cos_str_set(&rule->id, "Rule_02");
    cos_str_set(&rule->status, "Disabled");
    cos_str_set(&rule->prefix, "test2");
    cos_str_set(&rule->storage_class, "Standard_IA");
    cos_str_set(&rule->dst_bucket, "qcs::cos:ap-shanghai::replicationtest-1253686666");
    cos_list_add_tail(&rule->node, &replication_param->rule_list);
    
    rule = cos_create_replication_rule_content(p);
    cos_str_set(&rule->id, "Rule_03");
    cos_str_set(&rule->status, "Enabled");
    cos_str_set(&rule->prefix, "test3");
    cos_str_set(&rule->storage_class, "Standard_IA");
    cos_str_set(&rule->dst_bucket, "qcs::cos:ap-shanghai::replicationtest-1253686666");
    cos_list_add_tail(&rule->node, &replication_param->rule_list);
    
    s = cos_put_bucket_replication(options, &bucket, replication_param, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("put bucket replication succeeded\n");
    } else {
            printf("put bucket replication failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    查询跨地域复制

    功能说明

    查询指定存储桶的跨地域复制规则。

    方法原型

    cos_status_t *cos_get_bucket_replication(const cos_request_options_t *options,
                                             const cos_string_t *bucket, 
                                             cos_replication_params_t *replication_param, 
                                             cos_table_t **resp_headers);

    参数说明

    参数名称 参数描述 类型
    options COS 请求选项 Struct
    bucket 存储桶名称,存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式 String
    replication_param 跨地域复制请求操作参数 Struct
    role 操作者账户信息 String
    rule_list 跨地域复制规则配置信息 Struct
    id 用来标注具体规则的名称 String
    status 标识规则是否生效,枚举值:Enabled,Disabled String
    prefix 匹配前缀。不可重叠,重叠返回错误 String
    dst_bucket 目的存储桶标识,格式为:资源标识符qcs::cos:[region]::[bucketname-AppId] String
    storage_class 存储类别,枚举值:Standard,Standard_IA
    默认值原存储桶级别
    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);
    
    //查询跨地域复制规则
    cos_replication_params_t *replication_param2 = NULL;
    replication_param2 = cos_create_replication_params(p);
    s = cos_get_bucket_replication(options, &bucket, replication_param2, &resp_headers);
    
    if (cos_status_is_ok(s)) {
            printf("get bucket replication succeeded\n");
            printf("ReplicationConfiguration role: %s\n", replication_param2->role.data);
    cos_replication_rule_content_t *content = NULL;
            cos_list_for_each_entry(cos_replication_rule_content_t, content, &replication_param2->rule_list, node) {
            printf("ReplicationConfiguration rule, id:%s, status:%s, prefix:%s, dst_bucket:%s, storage_class:%s\n",
                            content->id.data, content->status.data, content->prefix.data, content->dst_bucket.data, content->storage_class.data);
            }
    } else {
            printf("get bucket replication failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    删除跨地域复制

    功能说明

    删除指定存储桶的跨地域复制规则。

    方法原型

    cos_status_t *cos_delete_bucket_replication(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_replication(options, &bucket, &resp_headers);
    if (cos_status_is_ok(s)) {
            printf("delete bucket replication succeeded\n");
    } else {
            printf("delete bucket replication failed\n");
    }
    
    //销毁内存池
    cos_pool_destroy(p); 

    Was this page helpful?

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

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