tencent cloud

文档反馈

最后更新时间:2024-01-04 18:00:58

    简介

    本文档提供关于清单的 API 概览以及 SDK 示例代码。
    API
    操作名
    操作描述
    设置清单任务
    设置存储桶的清单任务
    查询清单任务
    查询存储桶的清单任务
    列出清单任务
    列出存储桶的清单任务
    删除清单任务
    删除存储桶的清单任务

    设置清单任务

    功能说明

    PUT Bucket inventory 用于在存储桶中创建清单任务。

    方法原型

    CosResult BucketOp::PutBucketInventory(const PutBucketInventoryReq& req, PutBucketInventoryResp* resp);

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::PutBucketInventoryReq req(bucket_name);
    qcloud_cos::PutBucketInventoryResp resp;
    
    // 设置清单任务
    req.SetId("list");
    
    COSBucketDestination destination;
    destination.SetFormat("CSV");
    destination.SetAccountId("100010974959");
    
    destination.SetBucket("qcs::cos:ap-guangzhou::loggtest-1234567890");
    destination.SetPrefix("/");
    destination.SetEncryption(true);
    
    OptionalFields fields;
    fields.SetIsSize(true);
    fields.SetIsLastModified(true);
    fields.SetIsStorageClass(true);
    fields.SetIsMultipartUploaded(true);
    fields.SetIsReplicationStatus(true);
    fields.SetIsEtag(true);
    
    Inventory inventory;
    inventory.SetIsEnable(true);
    inventory.SetIncludedObjectVersions("All");
    inventory.SetFilter("/");
    inventory.SetId(req.GetId());
    inventory.SetFrequency("Daily");
    inventory.SetCOSBucketDestination(destination);
    inventory.SetOptionalFields(fields);
    
    req.SetInventory(inventory);
    
    qcloud_cos::CosResult result = cos.PutBucketInventory(req, &resp);
    if (result.IsSucc()) {
    // 请求成功
    } else {
    // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }

    参数说明

    参数
    参数描述
    类型
    是否必填
    req
    PutBucketInventory 操作的请求
    PutBucketInventoryReq
    resp
    PutBucketInventory 操作的响应
    PutBucketInventoryResp
    PutBucketInventoryReq 提供以下成员函数:
    // 设置清单规则
    void SetInventory(Inventory& inventory);
    该请求涉及到的类定义如下:
    
    // 清单配置参数
    class Inventory {
    void SetId(const std::string& id) // 设置清单的名称
    void SetIsEnable(bool is_enabled) // 清单是否启用
    void SetIncludedObjectVersions(const std::string& included_objectversions) // 是否在清单中包含对象版本:
    void SetFilter(const std::string& filter) // 筛选待分析对象(前缀)
    void SetCOSBucketDestination(const COSBucketDestination& destination) // 设置清单结果导出后存放的存储桶信息
    void SetOptionalFields(const OptionalFields& fields) // 设置清单结果中应包含的分析项目
    void SetFrequency(const std::string& frequency) // 设置清单任务的周期,支持 Daily 和 Weekly
    }
    
    // 清单结果中应包含的分析项目
    class OptionalFields {
    void SetIsSize(const bool size); // 设置是否需要文件大小
    void SetIsLastModified(const bool last_modified) // 设置是否需要文件修改时间
    void SetIsStorageClass(const bool storage_class) // 设置是否需要存储类型
    void SetIsMultipartUploaded(const bool ismultipart_uploaded) // 设置是否需要分块上传
    void SetIsReplicationStatus(const bool replication_status) // 设置是否需要跨区域复制状态
    }
    
    // 清单结果导出后存放的存储桶信息
    class COSBucketDestination {
    public:
    void SetFormat(const std::string& format) // 设置清单生成文件格式,目前支持 CSV 格式
    void SetAccountId(const std::string& accountId) // 存储桶的所有者 ID
    void SetBucket(const std::string& bucket) // 设置存储桶完整 ID
    void SetPrefix(const std::string& prefix) // 设置清单分析结果的存储桶名
    void SetEncryption(const bool encryption) // 设置清单结果是否加密

    错误码说明

    该请求可能会发生的一些常见的特殊错误如下:
    错误码
    描述
    状态码
    InvalidArgument
    不合法的参数值
    HTTP 400 Bad Request
    TooManyConfigurations
    清单数量已经达到1000条的上限
    HTTP 400 Bad Request
    AccessDenied
    未授权的访问。您可能不具备访问该存储桶的权限
    HTTP 403 Forbidden

    查询清单任务

    功能说明

    GET Bucket inventory 用于查询存储桶中用户的清单任务信息。

    方法原型

    CosResult CosAPI::GetBucketInventory(const GetBucketInventoryReq& request, GetBucketInventoryResp* response) {

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::GetBucketInventoryReq req(bucket_name);
    qcloud_cos::GetBucketInventoryResp resp;
    
    // 设置清单任务
    req.SetId("list");
    
    qcloud_cos::CosResult result = cos.GetBucketInventoryResp(req, &resp);
    if (result.IsSucc()) {
    // 请求成功,获取清单信息
    //const Inventory inventory = resp.GetInventory();
    //std::cout << "inventory isenabled:" << inventory.GetIsEnable() << std::endl;
    //std::cout << "inventory IncludedObjectVersions:" << inventory.GetIncludedObjectVersions() << std::endl;
    //std::cout << "inventory filter:" << inventory.GetFilter() << std::endl;
    //std::cout << "inventory id:" << inventory.GetId() << std::endl;
    //std::cout << "inventory Frequency:" << inventory.GetFrequency() << std::endl;
    
    //std:: cout << "===================================" << std::endl;
    //COSBucketDestination destination = inventory.GetCOSBucketDestination();
    //std::cout << "destination Format:" << destination.GetFormat() << std::endl;
    //std::cout << "destination AccountID:" << destination.GetAccountId() << std::endl;
    //std::cout << "destination Bucket:" << destination.GetBucket() << std::endl;
    //std::cout << "destination Encryption:" << destination.GetEncryption() << std::endl;
    
    //std:: cout << "===================================" << std::endl;
    //
    //OptionalFields fields = inventory.GetOptionalFields();
    
    //std::cout << "fields Size:" << fields.GetIsSize() << std::endl;
    //std::cout << "fields LastModified:" << fields.GetIsLastModified() << std::endl;
    //std::cout << "fields StorageClass:" << fields.GetIsStorageClass() << std::endl;
    //std::cout << "fields Region:" << fields.GetIsMultipartUploaded() << std::endl;
    //std::cout << "fields ReplicationStatus:" << fields.GetIsReplicationStatus() << std::endl;
    //std::cout << "fields Tag:" << fields.GetIsETag() << std::endl;
    } else {
    // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }

    参数说明

    参数
    参数描述
    类型
    是否必填
    req
    GetBucketInventory 操作的请求
    GetBucketInventoryReq
    resp
    GetBucketInventory 操作的响应
    GetBucketInventoryResp
    GetBucketInventoryResp 提供以下成员函数:
    // 获取清单规则
    const Inventory& GetInventory() const;

    查询所有清单

    功能说明

    List Bucket Inventory Configurations 用于请求返回一个存储桶中的所有清单任务。

    方法原型

    CosResult CosAPI::ListBucketInventoryConfigurations(const ListBucketInventoryConfigurationsReq& request, ListBucketInventoryConfigurationsResp* response) {

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::ListBucketInventoryConfigurationsReq req(bucket_name);
    qcloud_cos::ListBucketInventoryConfigurationsResp resp;
    
    qcloud_cos::CosResult result = cos.ListBucketInventoryConfigurations(req, &resp);
    if (result.IsSucc()) {
    // 请求成功,获取清单信息
    // std::cout << "===================ListBucketInventoryConfigurations=====================" << std::endl;
    //
    // std::vector<Inventory> inventory_vec = resp.GetInventory();
    //
    // std::cout << resp.GetIsTruncated() << std::endl;
    // std::cout << resp.GetContinuationToken() << std::endl;
    // std::cout << resp.GetNextContinuationToken() << std::endl;
    //
    // std::vector<Inventory>::iterator itr = inventory_vec.begin();
    // for(; itr != inventory_vec.end(); ++itr) {
    //
    // std:: cout << "==============Inventory=============================" << std::endl;
    // std::cout << "inventory id:" << itr->GetId() << std::endl;
    // std::cout << "inventory isenabled:" << itr->GetIsEnable() << std::endl;
    // std::cout << "inventory IncludedObjectVersions:" << itr->GetIncludedObjectVersions() << std::endl;
    // std::cout << "inventory filter:" << itr->GetFilter() << std::endl;
    // std::cout << "inventory Frequency:" << itr->GetFrequency() << std::endl;
    // std:: cout << "==============GetCOSBucketDestination==================" << std::endl;
    // COSBucketDestination destination = itr->GetCOSBucketDestination();
    // std::cout << "destination Format:" << destination.GetFormat() << std::endl;
    // std::cout << "destination AccountID:" << destination.GetAccountId() << std::endl;
    // std::cout << "destination Bucket:" << destination.GetBucket() << std::endl;
    // std::cout << "destination Encryption:" << destination.GetEncryption() << std::endl;
    //
    // std:: cout << "===================OptionalFields======================" << std::endl;
    // OptionalFields fields = itr->GetOptionalFields();
    // std::cout << "fields Size:" << fields.GetIsSize() << std::endl;
    // std::cout << "fields LastModified:" << fields.GetIsLastModified() << std::endl;
    // std::cout << "fields StorageClass:" << fields.GetIsStorageClass() << std::endl;
    // std::cout << "fields Region:" << fields.GetIsMultipartUploaded() << std::endl;
    // std::cout << "fields ReplicationStatus:" << fields.GetIsReplicationStatus() << std::endl;
    // std::cout << "fields Tag:" << fields.GetIsETag() << std::endl;
    // }
    // std::cout << "===============ListBucketInventoryConfigurations end================" << std::endl;
    } else {
    // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等
    }
    

    参数说明

    参数
    参数描述
    类型
    是否必填
    req
    ListBucketInventoryConfigurations 操作的请求
    ListBucketInventoryConfigurationsReq
    resp
    ListBucketInventoryConfigurations 操作的响应
    ListBucketInventoryConfigurationsResp
    ListBucketInventoryConfigurationsReq 提供以下成员函数:
    // 当 COS 响应体中 IsTruncated 为 true,且 NextContinuationToken 节点中存在参数值时,您可以将这个参数作为 continuation-token 参数值,以获取下一页的清单任务信息。
    void SetContinuationToken(const std::string continuation_token);

    删除清单任务

    功能说明

    DELETE Bucket inventory 用于删除存储桶中指定的清单任务。

    方法原型

    CosResult CosAPI::DeleteBucketInventory(const DeleteBucketInventoryReq& request, DeleteBucketInventoryResp* response);

    请求示例

    qcloud_cos::CosConfig config("./config.json");
    qcloud_cos::CosAPI cos(config);
    std::string bucket_name = "examplebucket-1250000000";
    qcloud_cos::DeleteBucketInventoryReq req(bucket_name);
    qcloud_cos::DeleteBucketInventoryResp resp;
    
    qcloud_cos::CosResult result = cos.DeleteBucketInventory(req, &resp);
    if (result.IsSucc()) {
    // 请求成功
    } else {
    // 请求失败,可以调用 CosResult 的成员函数输出错误信息,如 requestID 等

    参数说明

    参数
    参数描述
    类型
    是否必填
    req
    DeletBucketInventory 操作的请求
    DeletBucketInventoryReq
    resp
    DeletBucketInventory 操作的响应
    DeletBucketInventoryResp
    DeleteBucketInventoryReq 提供以下成员函数:
    void SetId(const std::string id) // 设置要删除清单的 ID
    
    联系我们

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

    技术支持

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

    7x24 电话支持