タグを使用して、さまざまな目的で使用されるバケットを識別し、これらのバケットを管理できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
バケットのタグを設定できるのは、バケット所有者と
oss:PutBucketTagging
権限を付与されたユーザーのみです。 他のユーザーがバケットのタグを設定しようとすると、AccessDeniedエラーコードを含む403 Forbiddenメッセージが返されます。バケットごとに最大20個のタグ (キーと値のペア) を設定できます。
タグのキーと値はUTF-8でエンコードする必要があります。
キーの長さは最大64文字です。 大文字と小文字が区別され、空にすることはできません。 キーの先頭を
http://
、https://
、Aliyun
にすることはできません。 これらのプレフィックスは大文字と小文字を区別しません。タグの値は最大128文字で、空にすることができます。
バケットのタグの設定
次のコードは、examplebucketという名前のバケットのタグを設定する方法の例を示しています。
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* バケットのタグを設定します。 */
SetBucketTaggingRequestリクエスト (BucketName);
タグtag1("yourTagkey1" 、"yourTagValue1");
タグtag2("yourTagkey2" 、"yourTagValue2");
TagSet tagset;
tagset.push_back(tag1);
tagset.push_back(tag2);
タグ付け
taging.setTags(tagset);
request.setTagging(taging);
auto outcome = client.SetBucketTagging (リクエスト);
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();
0を返します。}
バケットのタグを照会する
次のコードは、examplebucketという名前のバケットのタグを照会する方法の例を示しています。
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* バケットのタグを照会します。 */
GetBucketTaggingRequestリクエスト (BucketName);
auto outcome = client.GetBucketTagging (リクエスト);
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();
0を返します。}
特定のタグを持つバケットを一覧表示する
次のコードは、特定のタグを持つバケットを一覧表示する方法の例を示しています。
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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クライアント (Endpoint, credentialsProvider, conf);
/* 指定されたタグを持つバケットを一覧表示します。 */
ListBucketsRequestリクエスト;
タグtag1("yourTagkey1" 、"yourTagValue1");
request.setTag(tag1);
auto outcome = client.ListBuckets (リクエスト);
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();
0を返します。}
バケットのタグをすべて削除する
次のコードは、バケットのすべてのタグを削除する方法の例を示しています。
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* バケットのタグを削除します。 */
DeleteBucketTaggingRequestリクエスト (BucketName);
auto outcome = client.DeleteBucketTagging (リクエスト);
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();
0を返します。}
バケットの特定のタグを削除する
次のコードは、バケットの特定のタグを削除する方法の例を示しています。
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* キーを指定してバケットのタグを削除します。 */
DeleteBucketTaggingRequestリクエスト (BucketName);
タグ付け;
TagSet tagset;
タグタグ ("project" 、"projectone");
tagset.push_back (タグ);
tagging.setTags(tagset);
request.setTagging (タグ付け);
auto outcome = client.DeleteBucketTagging (リクエスト);
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();
0を返します。}
参考資料
バケットのタグを設定するために呼び出すことができるAPI操作の詳細については、「PutBucketTags」をご参照ください。
バケットのタグを照会するために呼び出すことができるAPI操作の詳細については、「GetBucketTags」をご参照ください。
バケットのタグを削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketTags」をご参照ください。