对象标签(C++ SDK V2)

更新时间:
复制为 MD 格式

对象标签(Object Tagging)使用一组键值对标记文件,可用于生命周期管理等。本文介绍如何使用 OSS C++ SDK V2 设置、获取和删除对象标签。

注意事项

  • 运行示例代码前,请将代码中的 <region> 替换为实际的地域,如 cn-hangzhou

  • 本文示例代码使用环境变量获取访问凭证。

  • 设置对象标签需要拥有 oss:PutObjectTagging 权限。

  • 获取对象标签需要拥有 oss:GetObjectTagging 权限。

  • 删除对象标签需要拥有 oss:DeleteObjectTagging 权限。

示例代码

设置对象标签

以下代码演示如何为指定文件设置对象标签:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    oss::models::TagSet tagSet;
    tagSet.tags.push_back(oss::models::Tag{"env", "production"});
    tagSet.tags.push_back(oss::models::Tag{"project", "demo"});

    oss::models::Tagging tagging;
    tagging.tagSet = tagSet;

    auto outcome = client.putObjectTagging(
        oss::models::PutObjectTaggingRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt")
            .setTagging(tagging));

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "设置对象标签失败"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "设置对象标签成功"
              << ", status: " << result.getStatusCode()
              << ", requestId: " << result.getRequestId() << std::endl;
    return 0;
}
          

获取对象标签

以下代码演示如何获取指定文件的对象标签:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    auto outcome = client.getObjectTagging(
        oss::models::GetObjectTaggingRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt"));

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "获取对象标签失败"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "获取对象标签成功, status: " << result.getStatusCode() << std::endl;
    auto& tagging = result.getTagging();
    if (tagging.tagSet) {
        for (const auto& tag : tagging.tagSet->tags) {
            std::cout << "标签: " << tag.key << " = " << tag.value << std::endl;
        }
    }
    return 0;
}
          

删除对象标签

以下代码演示如何删除指定文件的对象标签:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    auto outcome = client.deleteObjectTagging(
        oss::models::DeleteObjectTaggingRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt"));

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "删除对象标签失败"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "删除对象标签成功"
              << ", status: " << result.getStatusCode()
              << ", requestId: " << result.getRequestId() << std::endl;
    return 0;
}
          

相关文档