tencent cloud

文档反馈

存储桶管理

最后更新时间:2022-01-23 14:27:55

    简介

    本文档提供关于跨域访问、生命周期、版本控制、跨地域复制相关的 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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_put_cors()
    {
      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);
      init_test_request_options(options, is_cname);
      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.test1.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.test2.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.test3.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);
       //put cors
      s = cos_put_bucket_cors(options, &bucket, &rule_list, &resp_headers);
      log_status(s);
    
      cos_pool_destroy(p);
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_put_cors();
       cos_http_io_deinitialize();
       return 0;
    }
    

    查询跨域配置

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_get_cors()
    {
      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);
      init_test_request_options(options, is_cname);
      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.test1.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.test2.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.test3.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);
       //get cors
      cos_list_t rule_list_ret;
      cos_list_init(&rule_list_ret);
      s = cos_get_bucket_cors(options, &bucket, &rule_list_ret, &resp_headers);
      log_status(s);
      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);
      }
    
      cos_pool_destroy(p);
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_get_cors();
       cos_http_io_deinitialize();
       return 0;
    }
    

    删除跨域配置

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_delete_cors()
    {
      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);
      init_test_request_options(options, is_cname);
      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.test1.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.test2.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.test3.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);
       //delete cors
      cos_delete_bucket_cors(options, &bucket, &resp_headers);
      log_status(s);
    
      cos_pool_destroy(p);
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_delete_cors();
       cos_http_io_deinitialize();
       return 0;
    }
    

    生命周期

    设置生命周期

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_put_bucket_lifecycle()
    {
      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);
      init_test_request_options(options, is_cname);
      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 = 365;
      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 = 999;
      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);
      log_status(s);
    
      cos_pool_destroy(p);    
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_put_bucket_lifecycle();
       cos_http_io_deinitialize();
       return 0;
    }
    

    查询生命周期

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_get_bucket_lifecycle()
    {
      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);
      init_test_request_options(options, is_cname);
      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);    
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_get_bucket_lifecycle();
       cos_http_io_deinitialize();
       return 0;
    }
    

    删除生命周期

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_delete_bucket_lifecycle()
    {
      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);
      init_test_request_options(options, is_cname);
      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);    
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_delete_bucket_lifecycle();
       cos_http_io_deinitialize();
       return 0;
    }
    

    版本控制

    设置版本控制

    功能说明

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

    方法原型

    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

    示例

    开启版本控制

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_put_versioning()
    {
      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);
      init_test_request_options(options, is_cname);
      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);
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_put_versioning();
       cos_http_io_deinitialize();
       return 0;
    }
    

    暂停版本控制

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
      cos_warn_log("status->code: %d", s->code);
      if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
      if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
      if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
      cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
      cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
      cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
      cos_str_set(&config->appid, TEST_APPID);
      config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
      options->config = cos_config_create(options->pool);
      init_test_config(options->config, is_cname);
      options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_put_versioning()
    {
      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);
      init_test_request_options(options, is_cname);
      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);
    }
    int main(int argc, char *argv[])
    {
      // 通过环境变量获取 SECRETID 和 SECRETKEY
      TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
      TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
        if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
         exit(1);
      }
       //set log level, default COS_LOG_WARN
      cos_log_set_level(COS_LOG_WARN);
       //set log output, default stderr
      cos_log_set_output(NULL);
       test_put_versioning();
       cos_http_io_deinitialize();
       return 0;
    }
    

    查询版本控制

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
       cos_warn_log("status->code: %d", s->code);
       if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
       if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
       if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
       cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
       cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
       cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
       cos_str_set(&config->appid, TEST_APPID);
       config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
       options->config = cos_config_create(options->pool);
       init_test_config(options->config, is_cname);
       options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_get_versioning()
    {
       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);
       init_test_request_options(options, is_cname);
       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);
    }
    int main(int argc, char *argv[])
    {
       // 通过环境变量获取 SECRETID 和 SECRETKEY
       TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
       TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
    
       if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
          exit(1);
       }
        //set log level, default COS_LOG_WARN
       cos_log_set_level(COS_LOG_WARN);
        //set log output, default stderr
       cos_log_set_output(NULL);
        test_get_versioning();
        cos_http_io_deinitialize();
        return 0;
    }
    

    跨地域复制

    设置跨地域复制

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
       cos_warn_log("status->code: %d", s->code);
       if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
       if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
       if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
       cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
       cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
       cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
       cos_str_set(&config->appid, TEST_APPID);
       config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
       options->config = cos_config_create(options->pool);
       init_test_config(options->config, is_cname);
       options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_put_replication()
    {
       cos_pool_t *p = NULL;
       int is_cname = 0;
       cos_status_t *s = NULL;
       cos_request_options_t *options = NULL;
       cos_request_options_t *dst_options = NULL;
       cos_string_t bucket;
       cos_string_t dst_bucket;
       cos_table_t *resp_headers = NULL;
    
       cos_pool_create(&p, NULL);
       options = cos_request_options_create(p);
       init_test_request_options(options, is_cname);
       cos_str_set(&bucket, TEST_BUCKET_NAME);
       cos_str_set(&dst_bucket, "replicationtest");
        dst_options = cos_request_options_create(p);
       init_test_request_options(dst_options, is_cname);
       cos_str_set(&dst_options->config->endpoint, "cn-east.myqcloud.com");
        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:id/0:cos:cn-east:appid/1253686666:replicationtest");
       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:id/0:cos:cn-east:appid/1253686666:replicationtest");
       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:id/0:cos:cn-east:appid/1253686666:replicationtest");
       cos_list_add_tail(&rule->node, &replication_param->rule_list);
    
       //put bucket replication
       s = cos_put_bucket_replication(options, &bucket, replication_param, &resp_headers);
       log_status(s);
    
       cos_pool_destroy(p);
    }
    int main(int argc, char *argv[])
    {
       // 通过环境变量获取 SECRETID 和 SECRETKEY
       TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
       TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
    
       if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
          exit(1);
       }
        //set log level, default COS_LOG_WARN
       cos_log_set_level(COS_LOG_WARN);
        //set log output, default stderr
       cos_log_set_output(NULL);
        test_put_replication();
        cos_http_io_deinitialize();
        return 0;
    }
    

    查询跨地域复制

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
       cos_warn_log("status->code: %d", s->code);
       if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
       if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
       if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
       cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
       cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
       cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
       cos_str_set(&config->appid, TEST_APPID);
       config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
       options->config = cos_config_create(options->pool);
       init_test_config(options->config, is_cname);
       options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_get_replication()
    {
       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);
       init_test_request_options(options, is_cname);
       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);
    }
    int main(int argc, char *argv[])
    {
       // 通过环境变量获取 SECRETID 和 SECRETKEY
       TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
       TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
    
       if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
          exit(1);
       }
        //set log level, default COS_LOG_WARN
       cos_log_set_level(COS_LOG_WARN);
        //set log output, default stderr
       cos_log_set_output(NULL);
        test_get_replication();
        cos_http_io_deinitialize();
        return 0;
    }
    

    删除跨地域复制

    功能说明

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

    方法原型

    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

    示例

    #include "cos_http_io.h"
    #include "cos_api.h"
    #include "cos_log.h"
    #include <unistd.h>
    // endpoint 是 COS 访问域名信息,详情请参见 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1 文档
    static char TEST_COS_ENDPOINT[] = "cos.ap-guangzhou.myqcloud.com";
    // 开发者拥有的项目身份ID/密钥,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char *TEST_ACCESS_KEY_ID;                //your secret_id
    static char *TEST_ACCESS_KEY_SECRET;            //your secret_key
    // 开发者访问 COS 服务时拥有的用户维度唯一资源标识,用以标识资源,可在 https://console.cloud.tencent.com/cam/capi 页面获取
    static char TEST_APPID[] = "<APPID>";    //your appid
    //the cos bucket name, syntax: [bucket]-[appid], for example: mybucket-1253666666,可在 https://console.cloud.tencent.com/cos5/bucket 查看
    static char TEST_BUCKET_NAME[] = "<bucketname-appid>"; 
    void log_status(cos_status_t *s)
    {
       cos_warn_log("status->code: %d", s->code);
       if (s->error_code) cos_warn_log("status->error_code: %s", s->error_code);
       if (s->error_msg) cos_warn_log("status->error_msg: %s", s->error_msg);
       if (s->req_id) cos_warn_log("status->req_id: %s", s->req_id);
    }
    void init_test_config(cos_config_t *config, int is_cname)
    {
       cos_str_set(&config->endpoint, TEST_COS_ENDPOINT);
       cos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
       cos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
       cos_str_set(&config->appid, TEST_APPID);
       config->is_cname = is_cname;
    }
    void init_test_request_options(cos_request_options_t *options, int is_cname)
    {
       options->config = cos_config_create(options->pool);
       init_test_config(options->config, is_cname);
       options->ctl = cos_http_controller_create(options->pool, 0);
    }
    void test_delete_replication()
    {
       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);
       init_test_request_options(options, is_cname);
       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);
    }
    int main(int argc, char *argv[])
    {
       // 通过环境变量获取 SECRETID 和 SECRETKEY
       TEST_ACCESS_KEY_ID     = getenv("COS_SECRETID");
       TEST_ACCESS_KEY_SECRET = getenv("COS_SECRETKEY");
    
       if (cos_http_io_initialize(NULL, 0) != COSE_OK) {
          exit(1);
       }
        //set log level, default COS_LOG_WARN
       cos_log_set_level(COS_LOG_WARN);
        //set log output, default stderr
       cos_log_set_output(NULL);
        test_delete_replication();
        cos_http_io_deinitialize();
        return 0;
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持