You need to enable JavaScript to run this app.
导航

管理对象标签(C++ SDK)

最近更新时间2024.02.04 18:31:04

首次发布时间2023.01.29 15:35:46

TOS 支持为对象设置标签,并根据对象标签,完成特定对象的生命周期管理。本文介绍对象标签的相关参数及管理对象。

注意事项

  • 设置对象标签,您必须具有 tos:PutObjectTagging 权限,具体操作,请参见权限配置指南
  • 获取对象标签,您必须具有 tos:GetObjectTagging 权限,具体操作,请参见权限配置指南
  • 删除对象标签,您必须具有 tos:DeleteObjectTagging 权限,具体操作,请参见权限配置指南
  • 每个对象最多添加 10 个标签,并且同一对象的 Key 不能重复,关于对象标签的限制说明,请参见对象标签限制说明

设置对象标签

TOS 支持使用对象标签对桶中文件进行分类,您可以针对相同的对象标签设置生命周期规则。
以下代码用于设置对象标签。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    std::string objectName = "exampledir/exampleobject.txt";

    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);

    //若桶开启了多版本可通过 version_id = 'your object version id' 指定对应版本对象
    PutObjectTaggingInput input(bucketName, objectName);
    //设置 tags
    Tag tag1("key1","value1");
    Tag tag2("key2","value2");
    TagSet tagSet({tag1,tag2});
    input.setTagSet(tagSet);
    auto output = client.putObjectTagging(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "PutObjectTagging failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }

    std::cout << "PutObjectTagging success." << std::endl;
    // 释放网络等资源
    CloseClient();
    return 0;
}

获取对象标签

设置对象标签后,您可以根据需要获取对象的标签信息。当桶开启版本控制时,TOS 默认返回对象当前版本的标签信息,您可以通过指定对象的版本来获取指定版本的标签信息。
以下代码用于获取桶 examplebucketexampledir/exampleobject.txt 对象标签信息。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    std::string objectName = "exampledir/exampleobject.txt";
    
    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);

    //若桶开启了多版本可通过 version_id = 'your object version id' 指定对应版本对象
    GetObjectTaggingInput input(bucketName, objectName);
    auto output = client.getObjectTagging(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "GetObjectTagging failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }

    std::cout << "GetObjectTagging success." << std::endl;
    for(auto& tag : output.result().getTagSet().getTags()){
        std::cout << " tag key is:" << tag.getKey()
                  << " tag value is:" <<  tag.getValue() << std::endl;
    }
    // 释放网络等资源
    CloseClient();
    return 0;
}

删除对象标签

您可以根据需要删除不需要的标签信息。当桶开启多版本时,TOS 默认只删除对象当前版本的标签信息,您可以通过指定对象的版本号来删除指定版本的标签信息。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    std::string objectName = "exampledir/exampleobject.txt";

    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);

    //若桶开启了多版本可通过 versionId = 'your object version id' 指定对应版本对象
    DeleteObjectTaggingInput input(bucketName, objectName);
    auto output = client.deleteObjectTagging(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "DeleteObjectTagging failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }

    std::cout << "DeleteObjectTagging success." << std::endl;
    // 释放网络等资源
    CloseClient();
    return 0;
}

相关文档

关于对象标签的更多信息,请参见管理对象标签