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

Object Storage Service:保持ポリシー (WORM)

最終更新日:Dec 11, 2025

Object Storage Service (OSS) の保持ポリシーの WORM (Write Once, Read Many) 機能は、データの削除や変更を防止します。リソース所有者を含むすべてのユーザーが、指定された期間内に OSS バケット内のオブジェクトを変更または削除できないようにするには、バケットに保持ポリシーを設定します。保持期間中は、オブジェクトのアップロードと読み取りのみが可能です。オブジェクトの変更や削除は、保持期間が終了した後にのみ可能になります。

利用シーン

OSS の保持ポリシーが提供する WORM 機能は、企業が米国証券取引委員会 (SEC) や金融業規制機構 (FINRA) の規制およびコンプライアンス要件を満たすのに役立ちます。この機能は、金融、保険、医療、証券などのセクターや、ログデータの多層防御体系 (MLPS) 監査などのシナリオに適しています。

説明

OSS は Cohasset Associates によって認定および監査されており、電子記録の保持に関する厳しい要件を満たしています。保持ポリシーが設定された OSS バケットは、SEC 規則 17a-4(f)、FINRA 規則 4511、商品先物取引委員会 (CFTC) 規則 1.31 などの規制に準拠しています。詳細については、「OSS Cohasset 評価レポート」をご参照ください。

前提条件

保持ポリシーを設定したいバケットで、バージョン管理が有効または無効になっていることを確認してください。バージョン管理が一時停止されている場合、保持ポリシーを設定することはできません。バージョン管理の詳細については、「バージョン管理」をご参照ください。

注意事項

  • 保持ポリシーはバケットに対してのみ設定できます。

  • 同じバケットに対して OSS-HDFS を有効にし、かつ保持ポリシーを設定することはできません。

  • 保持期間中に、ライフサイクルルールを設定してバケット内のオブジェクトのストレージクラスを変更し、ストレージコストを削減しつつコンプライアンスを確保することができます。

ルールの説明

  • 有効なルール

    デフォルトでは、時間ベースの保持ポリシーは作成後 24 時間、`進行中` の状態になります。この期間中、バケットのリソースは保護されます。

    • 保持ポリシー作成後 24 時間以内

      • 保持ポリシーがロックされていない場合、バケットの所有者と権限を付与されたユーザーはポリシーを削除できます。

      • 保持ポリシーがロックされている場合、ポリシーを削除したり、保持期間を短縮したりすることはできません。ただし、保持期間を延長することは可能です。バケット内のデータは保持ポリシーによって保護されます。バケット内のデータを削除または変更しようとすると、409 FileImmutable エラーが返されます。

    • 保持ポリシー作成後 24 時間以上経過した場合

      保持ポリシー作成後 24 時間以上経過してもロックされていない場合、ポリシーは無効になり、削除できます。

  • 削除

    • 時間ベースの保持ポリシーはバケットのメタデータ属性です。バケットが削除されると、そのバケットの保持ポリシーも削除されます。

    • ポリシー作成後 24 時間以内にロックされていない場合、バケットの所有者と権限を付与されたユーザーはポリシーを削除できます。

    • バケットに保持ポリシーで保護されているオブジェクトが含まれている場合、バケットまたは保持ポリシーを削除することはできません。

  • 2022年6月1日にバケットに対して 30 日間の保持期間を持つ保持ポリシーを作成し、すぐにポリシーをロックしたとします。file1.txt、file2.txt、file3.txt の 3 つのオブジェクトを異なる時間にアップロードします。次の表に、オブジェクトのアップロード日と有効期限を示します。

    オブジェクト名

    アップロード日

    オブジェクトの有効期限

    file1.txt

    2022年4月1日

    2022年4月30日

    file2.txt

    2022年6月1日

    2022年6月30日

    file3.txt

    2022年9月1日

    2022年9月30日

方法

OSS コンソールの利用

  1. 保持ポリシーの作成

    1. OSS コンソールにログインします。

    2. 左側のナビゲーションウィンドウで バケット をクリックし、対象のバケット名をクリックします。

    3. 左側のナビゲーションウィンドウで、コンテンツセキュリティ > 保持ポリシー を選択します。

    4. 保持ポリシー ページで、ポリシーの作成 をクリックします。

    5. ポリシーの作成 ダイアログボックスで、保持期間 を指定します。

      説明

      保持期間は日数で測定されます。有効な値:1~25,550。

    6. OK をクリックします。

      説明

      ポリシーの状態は `進行中` です。この状態は 24 時間有効です。この期間中、バケットのリソースは保護されます。ポリシーを保持しない場合は、24 時間以内に削除できます。

  2. 保持ポリシーのロック

    1. ロック をクリックします。

    2. 表示されるダイアログボックスで、OK をクリックします。

      重要

      保持ポリシーがロックされると、変更または削除することはできません。また、保持期間中にバケット内のデータを変更または削除することもできません。

  3. (オプション) 保持期間の変更

    1. 編集 をクリックします。

    2. 表示されるダイアログボックスで、保持期間を変更します。

      重要

      保持期間は延長のみ可能で、短縮はできません。

Alibaba Cloud SDK の利用

以下のサンプルコードは、一般的なプログラミング言語の SDK を使用して保持ポリシーを設定する方法の例を示しています。他のプログラミング言語のサンプルコードの詳細については、「概要」をご参照ください。

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.InitiateBucketWormRequest;
import com.aliyun.oss.model.InitiateBucketWormResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントを使用します。 実際のエンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。 例:examplebucket。
        String bucketName = "examplebucket";
        // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient が不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // InitiateBucketWormRequest オブジェクトを作成します。
            InitiateBucketWormRequest initiateBucketWormRequest = new InitiateBucketWormRequest(bucketName);
            // 保持期間を 1 日に設定します。
            initiateBucketWormRequest.setRetentionPeriodInDays(1);

            // 保持ポリシーを作成します。
            InitiateBucketWormResult initiateBucketWormResult = ossClient.initiateBucketWorm(initiateBucketWormRequest);

            // 保持ポリシーの ID を表示します。
            String wormId = initiateBucketWormResult.getWormId();
            System.out.println(wormId);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

<?php

// 依存ライブラリをロードするために autoload ファイルをインポートします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドラインパラメーターの説明を指定します。
$optsdesc = [
    "region" => ['help' => 'バケットが配置されているリージョン。', 'required' => True], // (必須) バケットが配置されているリージョンを指定します。
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名', 'required' => False], // (オプション) 他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。
    "bucket" => ['help' => 'バケットの名前', 'required' => True], // (必須) バケットの名前を指定します。
];

// コマンドラインパラメーターを解析するための長いオプションリストを生成します。
$longopts = \array_map(function ($key) {
    return "$key:"; // 各パラメーターの末尾にコロン (:) を追加して、値が必要であることを示します。
}, array_keys($optsdesc));

// コマンドラインパラメーターを解析します。
$options = getopt("", $longopts); 

// 必須パラメーターが設定されているかどうかを確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // 必須パラメーターが設定されていないことを指定します。
        exit(1); 
    }
}

// コマンドラインパラメーターの値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。

// 環境変数を使用して AccessKey ID と AccessKey Secret をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト設定を使用します。
$cfg = Oss\Config::loadDefault();

// 認証情報プロバイダーを指定します。
$cfg->setCredentialsProvider($credentialsProvider);

// リージョンを指定します。
$cfg->setRegion($region);

// エンドポイントが提供されている場合は、エンドポイントを指定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// OSSClient インスタンスを作成します。
$client = new Oss\Client($cfg);

// InitiateBucketWormRequest オブジェクトを作成してバケットの保持ポリシーを作成し、保持ポリシーの保持期間を 3 日に設定します。
$request = new Oss\Models\InitiateBucketWormRequest(
    bucket: $bucket, 
    initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
        retentionPeriodInDays: 3 // 保持期間を 3 日に設定します。
));

// initiateBucketWorm メソッドを使用してバケットの保持ポリシーを作成します。
$result = $client->initiateBucketWorm($request);

// 返された結果を表示します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // 返された HTTP ステータスコード。
    'request id:' . $result->requestId . PHP_EOL . // リクエストのユニークな識別子であるリクエスト ID。
    'worm id:' . $result->wormId // 保持ポリシーの ID。
);

Node.js

const OSS = require('ali-oss');

const client = new OSS({
  // region をバケットが配置されているリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、region を oss-cn-hangzhou に設定します。
  region: 'yourregion',
  // 環境変数からアクセス認証情報を取得します。 このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,  
  authorizationV4: true,
  // bucket をご利用のバケット名に設定します。
  bucket: 'yourBucketName',
});
// データ保持ポリシーを作成します。
async function initiateBucketWorm() {
 // bucket をご利用のバケット名に設定します。
  const bucket = 'yourbucketname'
  // 保持期間を日数で指定します。
  const days = '<Retention Days>'
    const res = await client.initiateBucketWorm(bucket, days)
  console.log(res.wormId)
}

initiateBucketWorm()

Python

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメーターパーサーを作成し、スクリプトの目的を記述します。 この例では、WORM (Write Once Read Many) 機能を使用してバケットの保持ポリシーを作成する方法を説明します。
parser = argparse.ArgumentParser(description="initiate bucket worm sample")

# バケットが配置されているリージョンを指定する --region パラメーターを指定します。 このコマンドラインパラメーターは必須です。
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)
# バケットの名前を指定する --bucket パラメーターを指定します。 このコマンドラインパラメーターは必須です。
parser.add_argument('--bucket', help='バケットの名前。', required=True)
# バケットが配置されているリージョンのエンドポイントを指定する --endpoint パラメーターを指定します。 このコマンドラインパラメーターはオプションです。
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')
# オブジェクトを保持できる日数を指定する --retention_period_in_days パラメーターを指定します。 このコマンドラインパラメーターは必須です。
parser.add_argument('--retention_period_in_days', help='オブジェクトを保持できる日数。', required=True)

def main():
    # コマンドラインパラメーターを解析して、ユーザーが指定した値を取得します。
    args = parser.parse_args()

    # 環境変数から OSS へのアクセスに必要な認証情報をロードします。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を使用して設定オブジェクトを作成し、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # カスタムエンドポイントが提供されている場合は、設定オブジェクトのエンドポイントパラメーターを変更します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 上記の設定を使用して OSSClient インスタンスを初期化し、インスタンスが OSS と対話できるようにします。
    client = oss.Client(cfg)

    # バケットの保持ポリシーを作成するリクエストを送信します。
    result = client.initiate_bucket_worm(oss.InitiateBucketWormRequest(
        bucket=args.bucket, # バケットの名前。
        initiate_worm_configuration=oss.InitiateWormConfiguration(
            retention_period_in_days=int(args.retention_period_in_days), # オブジェクトを保持できる日数。 値を整数に設定します。
        ),
    ))

    # 操作の HTTP ステータスコード、リクエスト ID、および保持ポリシー ID を表示して、リクエストのステータスを確認します。
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' worm id: {result.worm_id}'
    )

# スクリプトが直接実行されたときに main 関数を呼び出して処理ロジックを開始します。
if __name__ == "__main__":
    main() # スクリプトの関数のエントリポイントを指定します。 制御プログラムフローはここから始まります。

Go

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Error creating credentials provider: %v", err)
	}

	// OSSClient インスタンスを作成します。
	// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用してください。
	// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用してください。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 署名バージョンを設定します。
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Error creating OSS client: %v", err)
	}

	// 保持ポリシーを設定するバケットの名前を指定します。
	bucketName := "<yourBucketName>"

	// オブジェクトの保持期間を 60 日に設定します。
	result, err := client.InitiateBucketWorm(bucketName, 60)
	if err != nil {
		log.Fatalf("Error initiating bucket WORM: %v", err)
	}

	log.Println("WORM policy initiated successfully:", result)
}

C++

#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;
}

ossutil コマンドラインインターフェイスの利用

ossutil コマンドラインインターフェイスを使用して WORM ポリシーを作成できます。ossutil のインストール方法については、「ossutil のインストール」をご参照ください。

次のコマンドは、examplebucket バケットに新しい WORM ポリシーを作成し、保持期間を 365 日に設定します。

ossutil api initiate-bucket-worm --bucket examplebucket --initiate-worm-configuration "{\"RetentionPeriodInDays\":\"365\"}"

このコマンドの詳細については、「initiate-bucket-worm」をご参照ください。

関連 API

上記の手順は API 操作に基づいています。プログラムに高度なカスタマイズ要件がある場合は、直接 REST API リクエストを行うことができます。REST API リクエストを行うには、署名を計算するためのコードを手動で記述する必要があります。詳細については、「InitiateBucketWorm」をご参照ください。

バージョン管理との連携

Veeam などのバックアップシステムのデータバージョン保護、回路設計図などの資産の変更履歴の追跡、金融業界のコンプライアンスアーカイブ要件への対応などのシナリオでは、継続的なデータ更新を許可しつつ、すべての履歴バージョンが不変であり削除できないようにする必要があります。これを実現するには、バケットに保持ポリシーを作成し、同時にバージョン管理を有効にすることができます。バージョン管理により、オブジェクトが上書きまたは削除された場合、その古いバージョンは物理的に削除されるのではなく、履歴バージョンとして保持されます。保持ポリシーは、バケット内のすべてのオブジェクトバージョンに保護期間を設定します。この期間中、どのバージョンも削除または変更することはできません。

バージョン管理と保持ポリシーを連携させる場合、以下の原則に従います:

  • 機能の有効化順序:バージョン管理と保持ポリシーを有効にする順序に制約はありません。必要に応じて柔軟に設定できます。

  • 状態遷移の制約

    • 保持ポリシーがロックされた後、バージョン管理の状態を「有効」から「一時停止」に変更することはできません。

    • バージョン管理が「一時停止」状態のバケットに対して保持ポリシーを有効にすることができます。ポリシーが有効になった後、バージョン管理の状態を「有効」に変更できます。

  • オブジェクトバージョンの保護メカニズム

    • 保持ポリシーはオブジェクトのすべてのバージョンを保護します。保護期間中は、どのバージョンも削除または変更できません。

    • 同じ名前のオブジェクトをアップロードして新しいバージョンを作成できます。新しいバージョンも保持ポリシーによって保護されます。

    • 保持ポリシーは削除マーカーには適用されません。削除マーカーの削除は保持ポリシーによって制限されません。

  • データレプリケーションの連携

    • ソースバケットと宛先バケットの両方で、バージョン管理と保持ポリシーを個別に設定できます。

    • バージョン情報はレプリケーション中に正常に転送されます。宛先バケットは、独自の設定に基づいてバージョンを管理します。

    • ソースバケットでのバージョン削除操作は、保持ポリシーが有効になっている宛先バケットには同期されません。

よくある質問

保持ポリシーとバージョン管理が同時に有効になっている場合、オブジェクトの削除操作はどのように処理されますか。

保持ポリシーとバージョン管理が同時に有効になっている場合、オブジェクトを削除すると次の効果があります:

  • 削除操作は削除マーカーを作成しますが、オブジェクトの履歴バージョンを物理的に削除しません。

  • 保持ポリシーは削除マーカーを保護しません。削除マーカーは削除できます。

  • 削除マーカーが存在する場合でも、保持ポリシーの保護期間中はすべてのオブジェクトバージョンを削除できません。

  • ライフサイクル管理は、宙ぶらりんの削除マーカーを削除できますが、保持ポリシーで保護されているオブジェクトバージョンは削除できません。

保持ポリシーを有効にした後でも、バージョン管理の状態を変更できますか。

保持ポリシーを有効にした後、バージョン管理の状態の変更には次の制約が適用されます:

  • 有効から一時停止へ:バージョン管理の状態が「有効」の場合、保持ポリシーがロックされた後に「一時停止」に変更することはできません。

  • 一時停止から有効へ:バージョン管理の状態が「一時停止」の場合でも、保持ポリシーを有効にした後に「有効」に変更できます。

  • 無効から有効へ:バージョン管理が無効になっているバケットの場合、保持ポリシーを設定した後にバージョン管理を有効にすることができます。

保持ポリシーとバージョン管理を併用すると、ストレージコストは増加しますか。

これにより、次の追加のストレージコストが発生します:

  • すべてのオブジェクトバージョンは保持ポリシーの保護期間中に保持され、ライフサイクルルールによって削除することはできません。

  • 特に頻繁に更新されるオブジェクトの場合、バージョンの蓄積によりストレージ使用量が大幅に増加する可能性があります。

  • 保持ポリシーに適切な保持期間を設定し、ライフサイクルルールを使用してストレージクラスのトランジションを管理することで、コストを最適化できます。

保持ポリシーの利点は何ですか。

保持ポリシーは、安全でコンプライアンスに準拠したデータストレージを提供します。保持ポリシーの保持期間内では、データを変更または削除することはできません。Resource Access Management (RAM) ポリシーとバケットポリシーを使用してデータを保護する場合でも、データは変更または削除される可能性があります。

どのようなシナリオで保持ポリシーが必要ですか。

医療記録、技術文書、契約書などの重要なデータを長期間保存し、データの変更や削除を防ぎたい場合は、バケットに保持ポリシーを設定できます。

保持ポリシーを削除できますか。

これは保持ポリシーのステータスによって異なります。

  • ロックされていない場合:バケットの所有者と権限を付与されたユーザーはポリシーを削除できます。

  • ロック済みの場合:誰もポリシーを削除できません。

オブジェクトに保持ポリシーを設定できますか。

いいえ、できません。保持ポリシーはバケットに対してのみ設定でき、ディレクトリや個々のオブジェクトには設定できません。

オブジェクトの保持時間はどのように計算されますか

保持期間の有効期限は、オブジェクトの最終更新日時と保持ポリシーの保持期間に基づいて計算されます。たとえば、バケットに 10 日間の保持ポリシーがあり、バケット内のオブジェクトが 2022年2月15日に最終更新された場合、オブジェクトは 2022年2月25日まで保持されます。

保持ポリシーが有効になっているバケットを削除するにはどうすればよいですか。

  • オブジェクトが保存されていない場合は、直接削除できます。

  • バケットにオブジェクトが含まれており、その保護期間が終了している場合は、まずすべてのオブジェクトを削除してからバケットを削除する必要があります。

  • 保護期間中のオブジェクトは削除できません。

OSS アカウントに支払い遅延がありますが、一部のオブジェクトがまだ保持ポリシーの保護期間内にある場合、これらのオブジェクトは保持されますか。

注意:バケット内のオブジェクトが保持ポリシーで保護されている場合でも、アカウントに支払い遅延がある場合、Alibaba Cloud は支払い遅延によるサービス停止ルールに従ってデータを削除します。

権限を付与された RAM ユーザーは保持ポリシーを設定できますか。

はい、できます。保持ポリシー API が利用可能で、RAM ポリシーをサポートしています。権限を付与された RAM ユーザーは、コンソールまたは API や SDK を使用して保持ポリシーを作成または削除できます。