存储桶管理

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

    简介

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

    跨域访问

    设置跨域配置

    功能说明

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

    方法原型

    CosResult PutBucketCORS(const PutBucketCORSReq& req, PutBucketCORSResp* resp)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // PutBucketCORSReq 的构造函数需要传入 bucket_name
    qcloud_cos::PutBucketCORSReq req(bucket_name);
    qcloud_cos::CORSRule rule;
    rule.m_id = "123";
    rule.m_allowed_headers.push_back("x-cos-meta-test");
    rule.m_allowed_origins.push_back("http://www.qq.com");
    rule.m_allowed_origins.push_back("http://intl.cloud.tentent.com");
    rule.m_allowed_methods.push_back("PUT");
    rule.m_allowed_methods.push_back("GET");
    rule.m_max_age_secs = "600";
    rule.m_expose_headers.push_back("x-cos-expose");
    req.AddRule(rule);
    
    qcloud_cos::PutBucketCORSResp resp;
    qcloud_cos::CosResult result = cos.PutBucketCORS(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req PutBucketCORSReq,PutBucketCORS 操作的请求
    resp PutBucketCORSResp,PutBucketCORS 操作的返回

    PutBucketCORSReq 提供以下成员函数:

    // 新增 CORSRule
    void AddRule(const CORSRule& rule);
    
    // 设置 CORSRule
    void SetRules(const std::vector<CORSRule>& rules)

    CORSRule 定义如下:

    struct CORSRule {
        std::string m_id; // 配置规则的 ID,可选填
        std::string m_max_age_secs; // 设置 OPTIONS 请求得到结果的有效期
        std::vector<std::string> m_allowed_headers; // 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 *
        std::vector<std::string> m_allowed_methods; // 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE
        std::vector<std::string> m_allowed_origins; // 允许的访问来源,支持通配符 * ,格式为:协议://域名[:端口]如:http://www.qq.com
        std::vector<std::string> m_expose_headers;  // 设置浏览器可以接收到的来自服务器端的自定义头部信息
    };

    查询跨域配置

    功能说明

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

    方法原型

    CosResult GetBucketCORS(const GetBucketCORSReq& req, GetBucketCORSResp* resp)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // GetBucketCORSReq 的构造函数需要传入 bucket_name
    qcloud_cos::GetBucketCORSReq req(bucket_name);
    qcloud_cos::GetBucketCORSResp resp;
    qcloud_cos::CosResult result = cos.GetBucketCORS(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req GetBucketCORSReq,GetBucketCORS 操作的请求
    resp GetBucketCORSResp,GetBucketCORS 操作的返回

    GetBucketCORSResp 提供以下成员函数:

    // 获取 CORSRules, CORSRule 定义参见 Put Bucket CORS
    std::vector<CORSRule> GetCORSRules();

    删除跨域配置

    功能说明

    删除指定存储桶的跨域访问配置。

    方法原型

    CosResult DeleteBucketCORS(const DeleteBucketCORSReq& req, DeleteBucketCORSResp* resp)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // DeleteBucketCORSReq 的构造函数需要传入 bucket_name
    qcloud_cos::DeleteBucketCORSReq req(bucket_name);
    qcloud_cos::DeleteBucketCORSResp resp;
    qcloud_cos::CosResult result = cos.DeleteBucketCORS(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req DeleteBucketCORSReq,DeleteBucketCORS 操作的请求
    resp DeleteBucketCORSResp,DeleteBucketCORS 操作的返回

    生命周期

    设置生命周期

    功能说明

    设置指定存储桶的生命周期配置信息。

    方法原型

    CosResult PutBucketLifecycle(const PutBucketLifecycleReq& req, PutBucketLifecycleResp* resp)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // PutBucketLifecycleReq 的构造函数需要传入 bucket_name
    qcloud_cos::PutBucketLifecycleReq req(bucket_name);
    // 设置规则1
    {
        qcloud_cos::LifecycleRule rule;
        rule.SetIsEnable(true);
        rule.SetId("lifecycle_rule00");
        qcloud_cos::LifecycleFilter filter;
        filter.SetPrefix("sevenyou_e1");
        rule.SetFilter(filter);
        qcloud_cos::LifecycleExpiration expiration;
        expiration.SetDays(1);
        rule.SetExpiration(expiration);
        req.AddRule(rule);
    }
    
    // 设置规则2
    {
        qcloud_cos::LifecycleRule rule;
        rule.SetIsEnable(true);
        rule.SetId("lifecycle_rule01");
        qcloud_cos::LifecycleFilter filter;
        filter.SetPrefix("sevenyou_e2");
        rule.SetFilter(filter);
        qcloud_cos::LifecycleExpiration expiration;
        expiration.SetDays(3);
        rule.SetExpiration(expiration);
        req.AddRule(rule);
    }
    
    qcloud_cos::PutBucketLifecycleResp resp;
    qcloud_cos::CosResult result = cos.PutBucketLifecycle(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 设置生命周期失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req PutBucketLifecycleReq,PutBucketLifecycle 操作的请求
    resp PutBucketLifecycleResp,PutBucketLifecycle 操作的返回

    PutBucketLifecycleReq 提供以下成员函数:

    // 新增 LifecycleRule
    void AddRule(const LifecycleRule& rule)
    
    // 设置 LifecycleRule
    void SetRule(const std::vector<LifecycleRule>& rules)

    LifecycleRule 的定义比较复杂,具体如下:

    struct LifecycleTag {
        std::string key;
        std::string value;
    };
    
    class LifecycleFilter {
    public:
        LifecycleFilter();
    
        std::string GetPrefix();
        std::vector<LifecycleTag> GetTags();
    
        void SetPrefix(const std::string& prefix);
        void SetTags(const std::vector<LifecycleTag>& tags);
        void AddTag(const LifecycleTag& tag);
    
        bool HasPrefix();
        bool HasTags();
    
    private:
        std::string m_prefix; // 指定规则所适用的前缀。匹配前缀的对象受该规则影响,Prefix 最多只能有一个
        std::vector<LifecycleTag> m_tags; // 标签,Tag 可以有零个或者多个
    };
    
    class LifecycleTransition {
    public:
        LifecycleTransition();
    
        uint64_t GetDays();
        std::string GetDate();
        std::string GetStorageClass();
    
        void SetDays(uint64_t days);
        void SetDate(const std::string& date);
        void SetStorageClass(const std::string& storage_class);
    
        bool HasDays();
        bool HasDate();
        bool HasStorageClass();
    
    private:
        // 不能在同一规则中同时使用 Days 和 Date
        uint64_t m_days; // 指明规则对应的动作在对象最后的修改日期过后多少天操作, 有效值是非负整数
        std::string m_date; // 指明规则对应的动作在何时操作
        std::string m_storage_class; // 指定 Object 转储到的目标存储类型,枚举值: Standard_IA
    };
    
    class LifecycleExpiration {
    public:
        LifecycleExpiration();
    
        uint64_t GetDays();
        std::string GetDate();
        bool IsExpiredObjDelMarker();
    
        void SetDays(uint64_t days);
        void SetDate(const std::string& date);
        void SetExpiredObjDelMarker(bool marker);
    
        bool HasDays();
        bool HasDate();
        bool HasExpiredObjDelMarker();
    
    private:
        // 不能在同一规则中同时使用 Days 和 Date
        uint64_t m_days; // 指明规则对应的动作在对象最后的修改日期过后多少天操作, 有效值为正整数
        std::string m_date; // 指明规则对应的动作在何时操作
        bool m_expired_obj_del_marker; // 删除过期对象删除标记,枚举值 true,false
    };
    
    class LifecycleNonCurrTransition {
    public:
        LifecycleNonCurrTransition();
    
        uint64_t GetDays();
        std::string GetStorageClass();
    
        void SetDays(uint64_t days);  
        void SetStorageClass(const std::string& storage_class);
    
        bool HasDays();
        bool HasStorageClass();
    
    private:
        uint64_t m_days; // 指明规则对应的动作在对象最后的修改日期过后多少天操作, 有效值是非负整数
        std::string m_storage_class; // 指定 Object 转储到的目标存储类型,枚举值: Standard_IA
    };
    
    class LifecycleNonCurrExpiration {
    public:
        LifecycleNonCurrExpiration();
    
        uint64_t GetDays();
    
        void SetDays(uint64_t days);
    
        bool HasDays();
    
    private:
        uint64_t m_days; // 指明规则对应的动作在对象最后的修改日期过后多少天操作, 有效值为正整数
    };
    
    struct AbortIncompleteMultipartUpload {
        uint64_t m_days_after_init; // 指明分片上传开始后多少天内必须完成上传
    };
    
    class LifecycleRule {
    public:
        LifecycleRule();
    
        void SetIsEnable(bool is_enable);
        void SetId(const std::string& id);
        void SetFilter(const LifecycleFilter& filter);
        void AddTransition(const LifecycleTransition& rh);
        void SetExpiration(const LifecycleExpiration& rh);
        void SetNonCurrTransition(const LifecycleNonCurrTransition& rh);
        void SetNonCurrExpiration(const LifecycleNonCurrExpiration& rh);
        void SetAbortIncompleteMultiUpload(const AbortIncompleteMultipartUpload& rh);
    
        bool IsEnable();
        std::string GetId();
        LifecycleFilter GetFilter();
        std::vector<LifecycleTransition> GetTransitions();
        LifecycleExpiration GetExpiration();
        LifecycleNonCurrTransition GetNonCurrTransition();
        LifecycleNonCurrExpiration GetNonCurrExpiration();
        AbortIncompleteMultipartUpload GetAbortIncompleteMultiUpload();
    
        bool HasIsEnable();
        bool HasId();
        bool HasFilter();
        bool HasExpiration();
        bool HasNonCurrTransition();
        bool HasNonCurrExpiration();
        bool HasAbortIncomMultiUpload();
    
    private:
        bool m_is_enable; // 规则是否生效
        std::string m_id; // 规则 ID
        LifecycleFilter m_filter; // 过滤器,用来指定规则生效的 Object 范围
        std::vector<LifecycleTransition> m_transitions; // 转换操作
        LifecycleExpiration m_expiration; // 过期操作
        LifecycleNonCurrTransition m_non_curr_transition; // 非当前版本转换操作
        LifecycleNonCurrExpiration m_non_curr_expiration; // 非当前版本过期操作
        AbortIncompleteMultipartUpload m_abort_multi_upload; // 设置允许分片上传保持运行的最长时间
    }

    查询生命周期

    功能说明

    查询指定存储桶的生命周期配置信息。

    方法原型

    CosResult GetBucketLifecycle(const GetBucketLifecycleReq& req, GetBucketLifecycleResp* resp)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // GetBucketLifecycleReq 的构造函数需要传入 bucket_name
    qcloud_cos::GetBucketLifecycleReq req(bucket_name);
    qcloud_cos::GetBucketLifecycleResp resp;
    qcloud_cos::CosResult result = cos.GetBucketLifecycle(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 获取生命周期配置失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req GetBucketLifecycleReq,GetBucketLifecycle 操作的请求
    resp GetBucketLifecycleResp,GetBucketLifecycle 操作的返回

    GetBucketLifecycleResp 提供以下成员函数:

    // 获取 LifecycleRules
    std::vector<LifecycleRule> GetRules()

    其中, LifecycleRule 定义参见 PUT Bucket lifecycle

    删除生命周期

    功能说明

    删除指定存储桶的生命周期配置信息。

    方法原型

    CosResult DeleteBucketLifecycle(const DeleteBucketLifecycleReq& req, DeleteBucketLifecycleResp* resp)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // DeleteBucketLifecycleReq 的构造函数需要传入 bucket_name
    qcloud_cos::DeleteBucketLifecycleReq req(bucket_name);
    qcloud_cos::DeleteBucketLifecycleResp resp;
    qcloud_cos::CosResult result = cos.DeleteBucketLifecycle(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 删除生命周期配置失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req DeleteBucketLifecycleReq,DeleteBucketLifecycle 操作的请求
    resp DeleteBucketLifecycleResp,DeleteBucketLifecycle 操作的返回

    版本控制

    设置版本控制

    功能说明

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

    方法原型

    CosResult PutBucketVersioning(const PutBucketVersioningReq& request, PutBucketVersioningResp* response)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    // PutBucketVersioningReq 的构造函数需要传入 bucket_name
    qcloud_cos::PutBucketVersioningReq req(bucket_name);
    req.SetStatus(true);
    qcloud_cos::PutBucketVersioningResp resp;
    qcloud_cos::CosResult result = cos.PutBucketVersioning(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req PutBucketVersioningReq,PutBucketVersioning 操作的请求
    resp PutBucketVersioningResp,PutBucketVersioning 操作的返回

    PutBucketVersioningReq 提供以下成员函数:

    // 版本是否开启,一经开启不能关闭,只能suspend
    void SetStatus(bool is_enable);

    查询版本控制

    功能说明

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

    方法原型

    CosResult GetBucketVersioning(const GetBucketVersioningReq& request, GetBucketVersioningResp* response) 

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    qcloud_cos::GetBucketVersioningReq req(bucket_name);
    qcloud_cos::GetBucketVersioningResp resp;
    qcloud_cos::CosResult result = cos.GetBucketVersioning(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req GetBucketVersioningReq,GetBucketVersioning 操作的请求
    resp GetBucketVersioningResp,GetBucketVersioning 操作的返回

    GetBucketVersioningResp 提供以下成员函数:

    // 返回bucket的版本状态,0: 从未开启版本管理, 1: 版本管理生效中, 2: 暂停
    int GetStatus() const

    跨地域复制

    设置跨地域复制

    功能说明

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

    方法原型

    func (s *BucketService) PutBucketReplication(ctx context.Context, opt *PutBucketReplicationOptions) (*Response, error)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    qcloud_cos::PutBucketReplicationReq req(bucket_name);
    req.SetRole("qcs::cam::uin/100000000001:uin/100000000001");
    qcloud_cos::ReplicationRule rule("", "qcs::cos:ap-guangzhou::examplebucket-1250000000", "", "", true);
    
    req.AddReplicationRule(rule);
    qcloud_cos::PutBucketReplicationResp resp;
    qcloud_cos::CosResult result = cos.PutBucketReplication(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }

    参数说明

    参数 参数描述
    req PutBucketReplicationReq,PutBucketReplication 操作的请求
    resp PutBucketReplicationResp,PutBucketReplication 操作的返回

    PutBucketReplicationReq 提供以下成员函数:

    // 发起者身份标示:qcs::cam::uin/<OwnerUin>:uin/<SubUin>
    void SetRole(const std::string& role);
    // 添加具体配置信息,最多支持1000个,所有策略只能指向一个目标存储桶
    void AddReplicationRule(const ReplicationRule& rule);
    
    // ReplicationRule 结构如下:
    struct ReplicationRule {
        bool m_is_enable;
        std::string m_id; // 非必须
        std::string m_prefix;
        std::string m_dest_bucket;
        std::string m_dest_storage_class; // 非必须 
    }

    查询跨地域复制

    功能说明

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

    方法原型

    CosResult GetBucketReplication(const GetBucketReplicationReq& request, GetBucketReplicationResp* response)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    qcloud_cos::GetBucketReplicationReq req(bucket_name);
    qcloud_cos::GetBucketReplicationResp resp;
    qcloud_cos::CosResult result = cos.GetBucketReplication(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req GetBucketReplicationReq,GetBucketReplication 操作的请求
    resp GetBucketReplicationResp,GetBucketReplication 操作的返回

    GetBucketReplicationResp 提供以下成员函数:

    // 获取发起者身份标示:qcs::cam::uin/<OwnerUin>:uin/<SubUin>
    std::string GetRole();
    // 获取具体配置信息,最多支持 1000 个,所有策略只能指向一个目标存储桶
    std::vector<ReplicationRule> GetRules();
    // ReplicationRule 结构如PutBucketReplication中描述

    删除跨地域复制

    功能说明

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

    方法原型

    CosResult DeleteBucketReplication(const DeleteBucketReplicationReq& request, DeleteBucketReplicationResp* response)

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    
    std::string bucket_name = "examplebucket-1250000000";
    
    qcloud_cos::DeleteBucketReplicationReq req(bucket_name);
    qcloud_cos::DeleteBucketReplicationResp resp;
    qcloud_cos::CosResult result = cos.DeleteBucketReplication(req, &resp);
    
    // 调用成功,调用 resp 的成员函数获取返回内容
    if (result.IsSucc()) {
        // ...
    } else {
        // 可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    } 

    参数说明

    参数 参数描述
    req DeleteBucketReplicationReq,DeleteBucketReplication 操作的请求
    resp DeleteBucketReplicationResp,DeleteBucketReplication 操作的返回

    Was this page helpful?

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

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