Object Storage Service (OSS) allows you to configure object tags to classify objects. You can configure lifecycle rules and control access to objects based on tags.

Note For more information about object tags, see Object tagging.

Add tags to an object when you upload the object

  • Add tags to an object when you upload the object by using simple upload
    The following code provides an example on how to add tags to an object when you upload the object by using simple upload:
    #include <alibabacloud/oss/OssClient.h>
    using namespace AlibabaCloud::OSS;
    
    int main(void)
    {
        /* Initialize the information about the account that is used to access Object Storage Service (OSS). */
        /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
        std::string Endpoint = "yourEndpoint";
        /* Specify the bucket name. Example: examplebucket. */
        std::string BucketName = "examplebucket";
        /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
        std::string ObjectName = "exampledir/exampleobject.txt";
    
        /* Initialize resources such as networks. */
        InitializeSdk();
    
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
        std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
        *content << "test cpp sdk";
        PutObjectRequest request(BucketName, ObjectName, content);
    
        /* Specify the tags that you want to add to the object. */
        Tagging tagging;
        tagging.addTag(Tag("key1", "value1"));
        tagging.addTag(Tag("key2", "value2"));
        request.setTagging(tagging.toQueryParameters());
    
        /* Upload the object. */
        auto outcome = client.PutObject(request);
    
        if (!outcome.isSuccess()) {
            /* Handle exceptions. */
            std::cout << "PutObject fail" <<
            ",code:" << outcome.error().Code() <<
            ",message:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
    
        /* Release resources such as networks. */
        ShutdownSdk();
        return 0;
    }
  • Add tags to an object when you upload the object by using multipart upload
    The following code provides an example on how to add tags to an object when you upload the object by using multipart upload:
    #include <alibabacloud/oss/OssClient.h>
    
    int64_t getFileSize(const std::string& file)
    {
        std::fstream f(file, std::ios::in | std::ios::binary);
        f.seekg(0, f.end);
        int64_t size = f.tellg();
        f.close();
        return size;
    }
    
    using namespace AlibabaCloud::OSS;
    
    int main(void)
    {
        /* Initialize the information about the account that is used to access OSS. */
        /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
        std::string Endpoint = "yourEndpoint";
        /* Specify the bucket name. Example: examplebucket. */
        std::string BucketName = "examplebucket";
        /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
        std::string ObjectName = "exampledir/exampleobject.txt";
    
        /* Initialize resources such as networks. */
        InitializeSdk();
    
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
        InitiateMultipartUploadRequest initUploadRequest(BucketName, ObjectName);
    
        /* Specify the tags that you want to add to the object. */
        Tagging tagging;
        tagging.addTag(Tag("key1", "value1"));
        tagging.addTag(Tag("key2", "value2"));
        initUploadRequest.setTagging(tagging.toQueryParameters());
    
        /* Initiate a multipart upload task. */
        auto uploadIdResult = client.InitiateMultipartUpload(initUploadRequest);
        auto uploadId = uploadIdResult.result().UploadId();
        std::string fileToUpload = "yourLocalFilename";
        int64_t partSize = 100 * 1024;
        PartList partETagList;
        auto fileSize = getFileSize(fileToUpload);
        int partCount = static_cast<int>(fileSize / partSize);
        /* Calculate the number of parts. */
        if (fileSize % partSize != 0) {
            partCount++;
        }
    
        /* Upload each part sequentially. */
        for (int i = 1; i <= partCount; i++) {
            auto skipBytes = partSize * (i - 1);
            auto size = (partSize < fileSize - skipBytes) ? partSize : (fileSize - skipBytes);
            std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>(fileToUpload, std::ios::in|std::ios::binary);
            content->seekg(skipBytes, std::ios::beg);
    
            UploadPartRequest uploadPartRequest(BucketName, ObjectName, content);
            uploadPartRequest.setContentLength(size);
            uploadPartRequest.setUploadId(uploadId);
            uploadPartRequest.setPartNumber(i);
            auto uploadPartOutcome = client.UploadPart(uploadPartRequest);
            if (uploadPartOutcome.isSuccess()) {
                Part part(i, uploadPartOutcome.result().ETag());
                partETagList.push_back(part);
            }
            else {
                std::cout << "uploadPart fail" <<
                ",code:" << uploadPartOutcome.error().Code() <<
                ",message:" << uploadPartOutcome.error().Message() <<
                ",requestId:" << uploadPartOutcome.error().RequestId() << std::endl;
            }
    
        }
    
        /* Complete the multipart upload task. */
        CompleteMultipartUploadRequest request(BucketName, ObjectName);
        request.setUploadId(uploadId);
        request.setPartList(partETagList);
        auto outcome = client.CompleteMultipartUpload(request);
    
        if (!outcome.isSuccess()) {
            /* Handle exceptions. */
            std::cout << "CompleteMultipartUpload fail" <<
            ",code:" << outcome.error().Code() <<
            ",message:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
    
        /* Release resources such as networks. */
        ShutdownSdk();
        return 0;
    }
  • Add tags to an object when you upload the object by using append upload
    The following code provides an example on how to add tags to an object when you upload the object by using append upload:
    #include <alibabacloud/oss/OssClient.h>
    using namespace AlibabaCloud::OSS;
    
    int main(void)
    {
        /* Initialize the information about the account that is used to access OSS. */
        /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
        std::string Endpoint = "yourEndpoint";
        /* Specify the bucket name. Example: examplebucket. */
        std::string BucketName = "examplebucket";
        /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
        std::string ObjectName = "exampledir/exampleobject.txt";
    
        /* Initialize resources such as networks. */
        InitializeSdk();
    
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
    
        auto meta = ObjectMetaData();
        meta.setContentType("text/plain");
    
        /* Append data to the object. The default value of position from which the append operation starts is 0. */
        std::shared_ptr<std::iostream> content1 = std::make_shared<std::stringstream>();
        *content1 <<"Thank you for using Aliyun Object Storage Service!";
        AppendObjectRequest request(BucketName, ObjectName, content1, meta);
    
        /* Specify the tags that you want to add to the object. */
        Tagging tagging;
        tagging.addTag(Tag("key1", "value1"));
        tagging.addTag(Tag("key2", "value2"));
        request.setTagging(tagging.toQueryParameters());
    
        /* Perform the append operation. */
        auto result = client.AppendObject(request);
    
        if (!result.isSuccess()) {
            /* Handle exceptions. */
            std::cout << "AppendObject fail" <<
            ",code:" << result.error().Code() <<
            ",message:" << result.error().Message() <<
            ",requestId:" << result.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
    
        /* Release resources such as networks. */
        ShutdownSdk();
        return 0;
    }
  • Add tags to an object when you upload the object by using resumable upload
    The following code provides an example on how to add tags to an object when you upload the object by using resumable upload:
    #include <alibabacloud/oss/OssClient.h>
    using namespace AlibabaCloud::OSS;
    
    int main(void)
    {
        
        /* Initialize the information about the account that is used to access OSS. */
        /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
        std::string Endpoint = "yourEndpoint";
        /* Specify the bucket name. Example: examplebucket. */
        std::string BucketName = "examplebucket";
        /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
        std::string ObjectName = "exampledir/exampleobject.txt";
        std::string UploadFilePath = "yourUploadfilePath";
    
        /* Initialize resources such as networks. */
        InitializeSdk();
    
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
    
        /* Start resumable upload. */
        UploadObjectRequest request(BucketName, ObjectName, YourUploadFileName);
    
        /* Add tags to the object. */
        Tagging tagging;
        tagging.addTag(Tag("key1", "value1"));
        tagging.addTag(Tag("key2", "value2"));
        request.setTagging(tagging.toQueryParameters());
    
        auto outcome = client.ResumableUploadObject(request);
    
        if (!outcome.isSuccess()) {
            /* Handle exceptions. */
            std::cout << "ResumableUploadObject fail" <<
            ",code:" << outcome.error().Code() <<
            ",message:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
    
        /* Release resources such as networks. */
        ShutdownSdk();
        return 0;
    }

Add tags to an uploaded object or modify the tags of the object

The following code provides an example on how to add tags to an uploaded object or modify the tags of the object:
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Initialize the information about the account that is used to access OSS. */
    /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
    std::string AccessKeyId = "yourAccessKeyId";
    std::string AccessKeySecret = "yourAccessKeySecret";
    /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Specify the bucket name. Example: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";

    /* Initialize resources such as networks. */
    InitializeSdk();

    ClientConfiguration conf;
    OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "test cpp sdk";
    PutObjectRequest request(BucketName, ObjectName, content);

    /* Upload the object. */
    auto outcome = client.PutObject(request);

    /* Specify the tags that you want to add to the object. */
    Tagging tagging;
    tagging.addTag(Tag("key1", "value1"));
    tagging.addTag(Tag("key2", "value2"));
    auto putTaggingOutcome = client.SetObjectTagging(SetObjectTaggingRequest(BucketName, ObjectName, tagging));

    if (!putTaggingOutcome.isSuccess()) {
        /* Handle exceptions. */
        std::cout << "SetObjectTagging fail" <<
        ",code:" << putTaggingOutcome.error().Code() <<
        ",message:" << putTaggingOutcome.error().Message() <<
        ",requestId:" << putTaggingOutcome.error().RequestId() << std::endl;
        ShutdownSdk();
        return -1;
    }

    /* Release resources such as networks. */
    ShutdownSdk();
    return 0;
}

Add tags to an object when you copy the object

You can configure one of the following tagging parameters when you copy an object. Default value: Copy. Valid values:
  • Copy: The tag of the source object is copied to the destination object.
  • Replace: The tag of the destination object is set to the tag specified in the request instead of the tag of the source object.

The following examples describe how to add tags to objects smaller than 1 GB in simple copy mode and larger than 1 GB in multipart copy mode:

  • The following code provides an example on how to add tags to an object smaller than 1 GB in size when you copy the object by using simple copy:
    #include <alibabacloud/oss/OssClient.h>
    using namespace AlibabaCloud::OSS;
    
    int main(void)
    {   
        /* Initialize the information about the account that is used to access OSS. */
        /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
        std::string Endpoint = "yourEndpoint";
        /* Specify the bucket name. Example: examplebucket. */
        std::string BucketName = "examplebucket";
        /* Specify the full path of the destination object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
        std::string ObjectName = "exampledir/exampleobject.txt";
        /* Specify the full path of the source object. 
        std::string CopyObjectName = "scrdir/scrobject.txt";
    
        /* Initialize resources such as networks. */
        InitializeSdk();
    
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
        std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
        *content << "test cpp sdk";
        PutObjectRequest request(BucketName, ObjectName, content);
    
        /* Specify the tags that you want to add to the object. */
        Tagging tagging;
        tagging.addTag(Tag("key1", "value1"));
        tagging.addTag(Tag("key2", "value2"));
        request.setTagging(tagging.toQueryParameters());
    
        /* Upload the object. */
        auto outcome = client.PutObject(request);
    
        /* Add tags to the object when you copy the object.  */
        CopyObjectRequest cpRequest(yourBucketName, CopyObjectName);
        cpRequest.setCopySource(yourBucketName, yourObjectName);
        Tagging tagging2;
        tagging2.addTag(Tag("key1-2", "value1-2"));
        tagging2.addTag(Tag("key2-2", "value2-2"));
        tagging2.addTag(Tag("key3-2", "value3-2"));
        cpRequest.setTagging(tagging2.toQueryParameters());
    
        /* Replace the tags of the destination object with the specified tags in the request. */
        cpRequest.setTaggingDirective(CopyActionList::Replace);
    
        /* Copy the object. */
        auto copyoutcome = client.CopyObject(cpRequest);
        if (!copyoutcome.isSuccess()) {
            /* Handle exceptions. */
            std::cout << "CopyObject fail" <<
            ",code:" << copyoutcome.error().Code() <<
            ",message:" << copyoutcome.error().Message() <<
            ",requestId:" << copyoutcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
    
        /* Release resources such as networks. */
        ShutdownSdk();
        return 0;
    }
  • The following code provides an example on how to add tags to an object larger than 1 GB in size when you copy the object by using multipart copy:
    #include <alibabacloud/oss/OssClient.h>
    #include <sstream>
    using namespace AlibabaCloud::OSS;
    
    int main(void)
    {
        /* Initialize the information about the account that is used to access OSS. */    
        /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
        std::string Endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        /* Specify the name of the source bucket. Example: srcexamplebucket. */
        std::string SourceBucketName = "srcexamplebucket";
        /* Specify the name of the destination bucket. The destination bucket must be located in the same region as the source bucket. Example: destbucket. */
        std::string CopyBucketName = "destbucket";
        /* Specify the full path of the source object. The full path cannot contain the bucket name. Example: srcdir/scrobject.txt. */
        std::string SourceObjectName = "srcdir/scrobject.txt";
        /* Specify the full path of the destination object. The full path cannot contain the bucket name. Example: destdir/destobject.txt. */
        std::string CopyObjectName = "destdir/destobject.txt";
    
        /* Initialize resources such as networks. */
        InitializeSdk();
    
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
    
        auto getObjectMetaReq = GetObjectMetaRequest(SourceBucketName, SourceObjectName);
        auto getObjectMetaResult = GetObjectMeta(getObjectMetaReq);
        if (!getObjectMetaResult.isSuccess()) {
            std::cout << "GetObjectMeta fail" <<
            ",code:" << outcome.error().Code() <<
            ",message:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
        /* Query the size of the object that you want to copy. */
        auto objectSize = getObjectMetaResult.result().ContentLength();
    
        /* Copy the large object. */
        ObjectMetaData metaData;
        std::stringstream ssDesc;
        ssDesc << "/" << SourceBucketName << "/" << SourceObjectName;
        std::string value = ssDesc.str();
        metaData.addHeader("x-oss-copy-source", value);
        InitiateMultipartUploadRequest initUploadRequest(BucketName, ObjectName, metaData);
    
        /* Specify the tags that you want to add to the object. */
        Tagging tagging;
        tagging.addTag(Tag("key1", "value1"));
        tagging.addTag(Tag("key2", "value2"));
        initUploadRequest.setTagging(tagging.toQueryParameters());
    
        /* Initiate a multipart copy task. */
        auto uploadIdResult = client.InitiateMultipartUpload(initUploadRequest);
        auto uploadId = uploadIdResult.result().UploadId();
        int64_t partSize = 100 * 1024;
        PartList partETagList;
        int partCount = static_cast<int>(objectSize / partSize);
        /* Calculate the number of parts. */
        if (objectSize % partSize != 0) {
            partCount++;
        }
    
        /* Copy each part sequentially. */
        for (int i = 1; i <= partCount; i++) {
            auto skipBytes = partSize * (i - 1);
            auto size = (partSize < objectSize - skipBytes) ? partSize : (objectSize - skipBytes);
            auto uploadPartCopyReq = UploadPartCopyRequest(CopyBucketName, CopyObjectName, SourceBucketName, SourceObjectName,uploadId, i + 1);
            uploadPartCopyReq.setCopySourceRange(skipBytes, skipBytes + size -1);
            auto uploadPartOutcome = client.UploadPartCopy(uploadPartCopyReq);
            if (uploadPartOutcome.isSuccess()) {
                Part part(i, uploadPartOutcome.result().ETag());
                partETagList.push_back(part);
            }
            else {
                std::cout << "UploadPartCopy fail" <<
                ",code:" << outcome.error().Code() <<
                ",message:" << outcome.error().Message() <<
                ",requestId:" << outcome.error().RequestId() << std::endl;
            }
    
        }
    
        /* Complete the multipart copy task. */
        CompleteMultipartUploadRequest request(CopyBucketName, CopyObjectName, partETagList, uploadId);
        auto outcome = client.CompleteMultipartUpload(request);
    
        if (!outcome.isSuccess()) {
            /* Handle exceptions. */
            std::cout << "CompleteMultipartUpload fail" <<
            ",code:" << outcome.error().Code() <<
            ",message:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        }
    
        /* Release resources such as networks. */
        ShutdownSdk();
        return 0;
    }

Add tags to a symbolic link

The following code provides an example on how to add tags to a symbolic link:
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Initialize the information about the account that is used to access OSS. */
    /* The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to access OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. */
    std::string AccessKeyId = "yourAccessKeyId";
    std::string AccessKeySecret = "yourAccessKeySecret";
    /* Set yourEndpoint to the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Specify the bucket name. Example: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";
    /* Specify the name of the symbolic link. Example: symlink.txt. 
    std::string LinkName = "symlink.txt";

    /* Initialize resources such as networks. */
    InitializeSdk();

    ClientConfiguration conf;
    OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "test cpp sdk";
    PutObjectRequest request(BucketName, ObjectName, content);

    /* Upload the object. /
    auto outcome = client.PutObject(request);

    /* Create the symbolic link. */
    CreateSymlinkRequest csRequest(BucketName, ObjectName);
    csRequest.SetSymlinkTarget(LinkName);

    /* Specify the tags that you want to add to the symbolic link. */
    Tagging tagging;
    tagging.addTag(Tag("key1", "value1"));
    tagging.addTag(Tag("key2", "value2"));
    csRequest.setTagging(tagging.toQueryParameters());

    auto csoutcome = client.CreateSymlink(csRequest);

    if (!csoutcome.isSuccess()) {
        /* Handle exceptions. */
        std::cout << "CreateSymlink fail" <<
        ",code:" << csoutcome.error().Code() <<
        ",message:" << csoutcome.error().Message() <<
        ",requestId:" << csoutcome.error().RequestId() << std::endl;
        ShutdownSdk();
        return -1;
    }

    /* Release resources such as networks. */
    ShutdownSdk();
    return 0;
}

References

  • For the complete sample code that is used to configure object tagging, visit GitHub.
  • For more information about the API operation that you can call to configure object tagging, see PutObjectTagging.