TOS 支持为对象设置标签,并根据对象标签,完成特定对象的生命周期管理。本文介绍对象标签的相关参数及管理对象。
tos:PutObjectTagging
权限,具体操作,请参见权限配置指南。tos:GetObjectTagging
权限,具体操作,请参见权限配置指南。tos:DeleteObjectTagging
权限,具体操作,请参见权限配置指南。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 默认返回对象当前版本的标签信息,您可以通过指定对象的版本来获取指定版本的标签信息。
以下代码用于获取桶 examplebucket
中 exampledir/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; }
关于对象标签的更多信息,请参见管理对象标签。