すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:バケットタギング (C++ SDK)

最終更新日:Nov 30, 2025

タグを使用して、さまざまな目的でバケットをマークし、カテゴリ別に管理できます。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 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>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。 */
    
    /* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    
    /* yourRegion を、バケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    
    /* バケット名を指定します (例: examplebucket)。 */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* バケットタグを設定します。 */
    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;
}

バケットタグの取得

以下のコードは、examplebucket という名前のバケットのタグを取得する方法を示しています。

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。 */
    
    /* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    
    /* yourRegion を、バケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    
    /* バケット名を指定します (例: examplebucket)。 */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* バケットタグを取得します。 */
    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;
}

指定したタグを持つバケットのリスト表示

以下のコードは、特定のタグを持つバケットをリスト表示する方法を示しています。

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。 */
    
    /* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint"; 
    
    /* yourRegion を、バケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";  

    /* ネットワークリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* 指定されたタグを持つバケットをリスト表示します。 */
    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;
}

バケットからの全タグの削除

以下のコードは、バケットからすべてのタグを削除する方法を示しています:

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。 */
    
    /* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    
    /* yourRegion を、バケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    
    /* バケット名を指定します (例: examplebucket)。 */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* バケットタグを削除します。 */
    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;
}

バケットからの指定タグの削除

以下のコードは、バケットから指定されたタグを削除する方法を示しています:

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
      /* OSS アカウント情報を初期化します。 */
      
      /* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
      std::string Endpoint = "yourEndpoint";
      
      /* yourRegion を、バケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 */
      std::string Region = "yourRegion";
      
      /* バケット名を指定します (例: examplebucket)。 */
      std::string BucketName = "examplebucket";

      /* ネットワークリソースを初期化します。 */
      InitializeSdk();

      ClientConfiguration conf;
      conf.signatureVersion = SignatureVersionType::V4;
      /* 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
      auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
      OssClient client(Endpoint, credentialsProvider, conf);
      client.SetRegion(Region);

      /* 指定されたキーに基づいてバケットタグを削除します。 */
      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;
}

関連ドキュメント

  • バケットタグを設定するための API 操作の詳細については、「PutBucketTags」をご参照ください。

  • バケットタグを取得するための API 操作の詳細については、「GetBucketTags」をご参照ください。

  • バケットタグを削除するための API 操作の詳細については、「DeleteBucketTags」をご参照ください。