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

Object Storage Service:保持ポリシー (C++ SDK)

最終更新日:Nov 30, 2025

Object Storage Service (OSS) のデータ保持ポリシーは、Write Once Read Many (WORM) 機能を使用します。この機能は、データの削除や変更を防ぐ方法でデータを保存します。リソース所有者を含む誰もが、指定された期間 OSS バケット内のオブジェクトを変更または削除できないようにするには、バケットにデータ保持ポリシーを設定します。保持期間が終了するまでは、バケットへのオブジェクトのアップロードとバケットからのオブジェクトの読み取りしかできません。オブジェクトは、保持期間が終了した後にのみ変更または削除できます。

注意事項

  • 保持ポリシーを設定する前に、この機能についてよく理解しておいてください。詳細については、「保持ポリシー」をご参照ください。

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient を作成する場合は、「OssClient インスタンスの作成」をご参照ください。

データ保持ポリシーの作成

次のコードは、データ保持ポリシーを作成する方法を示しています。

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

int main(void)
{
    /* OSS アカウント情報を初期化します。*/
            
    /* Endpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* Region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を 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);
  
      /* データ保持ポリシーを作成し、オブジェクトの保護期間を 1 日に設定します。*/
      auto outcome = client.InitiateBucketWorm(InitiateBucketWormRequest(BucketName, 1));

      if (outcome.isSuccess()) {      
            std::cout << " InitiateBucketWorm success " << std::endl;
            std::cout << "WormId:" << outcome.result().WormId() << std::endl;
      }
      else {
        /* 例外を処理します。*/
        std::cout << "InitiateBucketWorm 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 アカウント情報を初期化します。*/
            
    /* Endpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* Region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を 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);
  
      /* ロック解除済みのデータ保持ポリシーをキャンセルします。*/
      auto outcome = client.AbortBucketWorm(AbortBucketWormRequest(BucketName));

      if (outcome.isSuccess()) {      
        std::cout << " AbortBucketWorm success " << std::endl;
      }
      else {
        /* 例外を処理します。*/
        std::cout << "AbortBucketWorm 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 アカウント情報を初期化します。*/
            
    /* Endpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* Region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケット名を入力します。例:examplebucket */
    std::string BucketName = "examplebucket";
    /* データ保持ポリシー ID を入力します。*/
    std::string WormId = "453BA7F15A1C4D599D83EAC0C150****";

      /* ネットワークなどのリソースを初期化します。*/
      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);
  
      /* データ保持ポリシーをロックします。*/
      auto outcome = client.CompleteBucketWorm(CompleteBucketWormRequest(BucketName, WormId));

      if (outcome.isSuccess()) {      
        std::cout << " CompleteBucketWorm success " << std::endl;
      }
      else {
        /* 例外を処理します。*/
        std::cout << "CompleteBucketWorm 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 アカウント情報を初期化します。*/
            
    /* Endpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* Region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を 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);
  
      /* データ保持ポリシーを取得します。*/
      auto outcome = client.GetBucketWorm(GetBucketWormRequest(BucketName));

      if (outcome.isSuccess()) {      
            std::cout << " GetBucketWorm success " << std::endl;
            std::cout << " CreationDate:" << outcome.result().CreationDate() <<
            ",State:" << outcome.result().State() <<
            ",WormId:" << outcome.result().WormId() << std::endl;
      }
      else {
        /* 例外を処理します。*/
        std::cout << "GetBucketWorm 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 アカウント情報を初期化します。*/
            
    /* Endpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Endpoint を https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* Region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケット名を入力します。例:examplebucket */
    std::string BucketName = "examplebucket";
    /* データ保持ポリシー ID を入力します。*/
    std::string WormId = "453BA7F15A1C4D599D83EAC0C150****";

      /* ネットワークなどのリソースを初期化します。*/
      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);
  
      /* ロック済みのデータ保持ポリシーのオブジェクト保持期間を延長します。*/
      auto outcome = client.ExtendBucketWormWorm(ExtendBucketWormRequest(BucketName, WormId, 20));

      if (outcome.isSuccess()) {      
        std::cout << " ExtendBucketWormWorm success " << std::endl;
      }
      else {
        /* 例外を処理します。*/
        std::cout << "ExtendBucketWormWorm fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
      }

      /* ネットワークなどのリソースを解放します。*/
      ShutdownSdk();
      return 0;
}

関連ドキュメント

  • データ保持ポリシーを作成するための API 操作の詳細については、「InitiateBucketWorm」をご参照ください。

  • ロック解除済みのデータ保持ポリシーをキャンセルするための API 操作の詳細については、「AbortBucketWorm」をご参照ください。

  • データ保持ポリシーをロックするための API 操作の詳細については、「CompleteBucketWorm」をご参照ください。

  • データ保持ポリシーを取得するための API 操作の詳細については、「GetBucketWorm」をご参照ください。

  • 保持期間を延長するための API 操作の詳細については、「ExtendBucketWorm」をご参照ください。