对象标签(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;
}
相关文档
关于设置对象标签的完整示例代码,请参见PutObjectTagging.cpp。
关于获取对象标签的完整示例代码,请参见GetObjectTagging.cpp。
关于删除对象标签的完整示例代码,请参见DeleteObjectTagging.cpp。
该文章对您有帮助吗?