您可以通过标签(Tags)标记不同用途的存储空间(Bucket),并对Bucket进行分类管理。
注意事项
本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见新建OssClient。
只有Bucket拥有者及授予
oss:PutBucketTagging
权限的用户才能为Bucket设置标签,否则返回403 Forbidden错误,错误码为AccessDenied。每个Bucket最多可设置20个标签(Key-Value对)。
Key和Value必须为UTF-8编码。
Key最大长度为64字符,区分大小写,不能为空。Key不支持以
http://
、https://
、Aliyun
为前缀(不区分大小写)。Value最大长度为128字符,可以为空。
设置Bucket标签
以下代码用于为examplebucket存储空间设置标签。
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/*初始化OSS账号信息。*/
/*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
std::string Endpoint = "yourEndpoint";
/*填写Bucket名称,例如examplebucket。*/
std::string BucketName = "examplebucket";
/*初始化网络等资源。*/
InitializeSdk();
ClientConfiguration conf;
/* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
/*设置Bucket标签。*/
SetBucketTaggingRequest request(BucketName);
Tag tag1("yourTagkey1","yourTagValue1");
Tag tag2("yourTagkey2", "yourTagValue2");
TagSet tagset;
tagset.push_back(tag1);
tagset.push_back(tag2);
Tagging taging;
taging.setTags(tagset);
request.setTagging(taging);
auto outcome = client.SetBucketTagging(request);
if (outcome.isSuccess()) {
std::cout << " SetBucketTagging success " << std::endl;
}
else {
/*异常处理。*/
std::cout << "SetBucketTagging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/*释放网络等资源。*/
ShutdownSdk();
return 0;
}
获取Bucket标签
以下代码用于获取examplebucket存储空间的标签。
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/*初始化OSS账号信息。*/
/*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
std::string Endpoint = "yourEndpoint";
/*填写Bucket名称,例如examplebucket。*/
std::string BucketName = "examplebucket";
/*初始化网络等资源。*/
InitializeSdk();
ClientConfiguration conf;
/* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
/*获取Bucket标签。*/
GetBucketTaggingRequest request(BucketName);
auto outcome = client.GetBucketTagging(request);
if (outcome.isSuccess()) {
std::cout << " GetBucketTagging success " << std::endl;
for (const auto& tag : outcome.result().Tagging().Tags()) {
std::cout << "tag key:" << tag.Key() <<
"tag value:" << tag.Value() << std::endl;
}
}
else {
/*异常处理。*/
std::cout << "GetBucketTagging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/*释放网络等资源。*/
ShutdownSdk();
return 0;
}
列举带指定标签的Bucket
以下代码用于列举带指定标签的Bucket。
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/*初始化OSS账号信息。*/
/*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
std::string Endpoint = "yourEndpoint";
/*初始化网络等资源。*/
InitializeSdk();
ClientConfiguration conf;
/* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
/*列举带指定标签的Bucket。*/
ListBucketsRequest request;
Tag tag1("yourTagkey1","yourTagValue1");
request.setTag(tag1);
auto outcome = client.ListBuckets(request);
if (outcome.isSuccess()) {
std::cout << "ListBuckets success" << std::endl;
for (const auto& bucket : outcome.result().Buckets()) {
std::cout << "bucket name:" << bucket.Name() << std::endl;
}
}
else {
/*异常处理。*/
std::cout << "ListBuckets fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/*释放网络等资源。*/
ShutdownSdk();
return 0;
}
删除Bucket所有标签
以下代码用于删除Buckey的所有标签:
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/*初始化OSS账号信息。*/
/*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
std::string Endpoint = "yourEndpoint";
/*填写Bucket名称,例如examplebucket。*/
std::string BucketName = "examplebucket";
/*初始化网络等资源。*/
InitializeSdk();
ClientConfiguration conf;
/* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
/*删除Bucket标签。*/
DeleteBucketTaggingRequest request(BucketName);
auto outcome = client.DeleteBucketTagging(request);
if (outcome.isSuccess()) {
std::cout << " DeleteBucketTagging success " << std::endl;
}
else {
/*异常处理。*/
std::cout << "DeleteBucketTagging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/*释放网络等资源。*/
ShutdownSdk();
return 0;
}
删除Bucket指定标签
以下代码用于删除Bucket指定标签:
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/*初始化OSS账号信息。*/
/*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
std::string Endpoint = "yourEndpoint";
/*填写Bucket名称,例如examplebucket。*/
std::string BucketName = "examplebucket";
/*初始化网络等资源。*/
InitializeSdk();
ClientConfiguration conf;
/* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
/*指定key删除Bucket标签。*/
DeleteBucketTaggingRequest request(BucketName);
Tagging tagging;
TagSet tagset;
Tag tag("project","projectone");
tagset.push_back(tag);
tagging.setTags(tagset);
request.setTagging(tagging);
auto outcome = client.DeleteBucketTagging(request);
if (outcome.isSuccess()) {
std::cout << " DeleteBucketTagging success " << std::endl;
}
else {
/*异常处理。*/
std::cout << "DeleteBucketTagging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/*释放网络等资源。*/
ShutdownSdk();
return 0;
}
相关文档
关于设置Bucket标签的API接口说明,请参见PutBucketTags。
关于获取Bucket标签信息的API接口说明,请参见GetBucketTags。
关于删除Bucket标签的API接口说明,请参见DeleteBucketTags。