tencent cloud

All product documents
Cloud Object Storage
Inventory
Last updated: 2024-02-02 12:12:57
Inventory
Last updated: 2024-02-02 12:12:57

Overview

This document provides an overview of APIs and SDK code samples related to COS inventory.
API
Operation
Description
Creating an inventory configuration
Creates an inventory configuration for a bucket
Querying an inventory configuration
Queries an inventory configuration of a bucket
Listing inventory configurations
Lists the inventory configurations of a bucket
Deleting an inventory configuration
Deletes an inventory configuration of a bucket

Creating an Inventory Configuration

API description

This API (PUT Bucket inventory) is used to create an inventory configuration for a bucket.

Method prototype

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

Sample request

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;

// Create an inventory configuration.
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()) {
// Request successful
} else {
// Request failed. You can call the CosResult member functions to output the error information, such as requestID.
}

Parameter description

Parameter
Description
Type
Required
req
Request of the PutBucketInventory operation
PutBucketInventoryReq
Yes
resp
Resonse of the PutBucketInventory operation
PutBucketInventoryResp
Yes
PutBucketInventoryReq provides the following member function:
// Set an inventory policy.
void SetInventory(Inventory& inventory);
Classes in the request are defined as follows:

// Inventory configuration parameters
class Inventory {
void SetId(const std::string& id) // Set the ID of the inventory.
void SetIsEnable(bool is_enabled) // Specify whether to enable the inventory.
void SetIncludedObjectVersions(const std::string& included_objectversions) // Specify whether to include object versions in the inventory.
void SetFilter(const std::string& filter) // Specifies an inventory filter to include certain objects (prefixes).
void SetCOSBucketDestination(const COSBucketDestination& destination) // Set the information about the bucket that stores the published inventory results.
void SetOptionalFields(const OptionalFields& fields) // Specify the fields to include in the inventory results.
void SetFrequency(const std::string& frequency) // Specifies how frequently (either `Daily` or `Weekly`) the inventory results are produced.
}

// Fields to include in the inventory results
class OptionalFields {
void SetIsSize(const bool size); // Specify whether to include the object size field.
void SetIsLastModified(const bool last_modified) // Specify whether to include the last modified time field.
void SetIsStorageClass(const bool storage_class) // Specify whether to include the storage class field.
void SetIsMultipartUploaded(const bool ismultipart_uploaded) // Specify whether to include the multipart upload field.
void SetIsReplicationStatus(const bool replication_status) // Specify whether to include the cross-bucket replication status field.
}

// Information about where to publish the inventory results
class COSBucketDestination {
public:
void SetFormat(const std::string& format) // Specify the format of the inventory. Currently, CSV is supported.
void SetAccountId(const std::string& accountId) // Specify the ID of the bucket owner.
void SetBucket(const std::string& bucket) // Specify the full ID of the bucket.
void SetPrefix(const std::string& prefix) // Specify the name of the bucket that stores the inventory results.
void SetEncryption(const bool encryption) // Specify whether to encrypt the inventory results.

Error codes

The following describes some common errors that may occur when you make requests using this API.
Error Code
Description
Status Code
InvalidArgument
Invalid argument
HTTP 400 Bad Request
TooManyConfigurations
The number of created inventory configurations exceeding the upper threshold (1,000)
HTTP 400 Bad Request
AccessDenied
Unauthorized access. You may not have permission to access the bucket
HTTP 403 Forbidden

Querying an Inventory Configuration

API description

This API (GET Bucket inventory) is used to query an inventory configuration of a bucket.

Method prototype

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

Sample request

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;

// Set the inventory configuration.
req.SetId("list");

qcloud_cos::CosResult result = cos.GetBucketInventoryResp(req, &resp);
if (result.IsSucc()) {
// Request successful. You can obtain the inventory information.
//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 {
// Request failed. You can call the CosResult member functions to output the error information, such as requestID.
}

Parameter description

Parameter
Description
Type
Required
req
Request of the GetBucketInventory operation
GetBucketInventoryReq
Yes
resp
Response of the GetBucketInventory operation
GetBucketInventoryResp
Yes
GetBucketInventoryResp provides the following member function:
// Obtain the inventory policy.
const Inventory& GetInventory() const;

Querying the List of Inventory Configurations

API description

This API (List Bucket Inventory Configurations) is used to obtain the list of inventory configurations for a bucket.

Method prototype

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

Sample request

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()) {
// Request successful. You can obtain the inventory configurations.
// 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 {
// Request failed. You can call the CosResult member functions to output the error information, such as requestID.
}


Parameter description

Parameter
Description
Type
Required
req
Request of the ListBucketInventoryConfigurations operation
ListBucketInventoryConfigurationsReq
Yes
resp
Response of the ListBucketInventoryConfigurations operation
ListBucketInventoryConfigurationsResp
Yes
ListBucketInventoryConfigurationsReq provides the following member function:
// In the COS response, if the value of `IsTruncated` is `true` and the `NextContinuationToken` node carries a value, you can pass the value of this parameter as the argument of `continuation-token` so that you can obtain the remaining inventory configurations.
void SetContinuationToken(const std::string continuation_token);

Deleting an Inventory Configuration

API description

This API (DELETE Bucket inventory) is used to delete an inventory configuration of a bucket.

Method prototype

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

Sample request

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()) {
// Request successful
} else {
// Request failed. You can call the CosResult member functions to output the error information, such as requestID.

Parameter description

Parameter
Description
Type
Required
req
Request of the DeletBucketInventory operation
DeletBucketInventoryReq
Yes
resp
Response of the DeletBucketInventory operation
DeletBucketInventoryResp
Yes
DeleteBucketInventoryReq provides the following member function:
void SetId(const std::string id) // Set the ID of the inventory to delete.

Was this page helpful?
You can also Contact Sales or Submit a Ticket for help.
Yes
No

Feedback

Contact Us

Contact our sales team or business advisors to help your business.

Technical Support

Open a ticket if you're looking for further assistance. Our Ticket is 7x24 available.

7x24 Phone Support
Hong Kong, China
+852 800 906 020 (Toll Free)
United States
+1 844 606 0804 (Toll Free)
United Kingdom
+44 808 196 4551 (Toll Free)
Canada
+1 888 605 7930 (Toll Free)
Australia
+61 1300 986 386 (Toll Free)
EdgeOne hotline
+852 300 80699
More local hotlines coming soon