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

Object Storage Service:OSS SDK for PHP 2.0 を使用した保持ポリシーの設定

最終更新日:Mar 21, 2026

Object Storage Service (OSS) SDK for PHP 2.0 を使用して、OSS バケット上の時刻ベースの保持ポリシーを管理します。保持ポリシーは、Write Once Read Many(WORM)制約を適用します。つまり、保持期間が満了するまで、当該バケット内のオブジェクトは削除または上書きできません。保持期間は 1 日~70 年の範囲で設定可能です。

本トピックでは、保持ポリシーの作成、ロック、照会、延長、およびキャンセル方法について説明します。

仕組み

バケットレベルの保持ポリシーは、以下のライフサイクルに従います:

  1. 作成 — 保持期間を設定します。ポリシーは初期状態で「ロック解除済み」となり、この状態ではキャンセルが可能です。

  2. ロック — ポリシーをロックして、恒久的かつコンプライアンス対応の状態に変更します。ロック済みのポリシーは削除できず、保持期間は延長のみ可能で、短縮は一切できません。

  3. 照会 — 任意のタイミングで、現在のポリシー構成およびステータスを取得できます。

  4. 延長 — ロック済みのポリシーの保持期間を延長します。

  5. キャンセル — ポリシーがまだロック解除済みの状態のときに中止します。

注意事項

  • サンプルコードではリージョン ID cn-hangzhou(中国 (杭州))を使用しています。デフォルトではパブリックエンドポイントが使用されます。同一リージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、代わりに内部エンドポイントをご利用ください。詳細については、「リージョンとエンドポイント」をご参照ください。

  • アクセス認証情報は環境変数から読み込まれます。設定手順については、「アクセス認証情報の設定」をご参照ください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • OSS バケット

  • OSS SDK for PHP 2.0 のインストール(AlibabaCloud\Oss\V2

  • AccessKey ID および AccessKey Secret を環境変数として設定済み

クライアントのセットアップ

すべての例で共通のクライアント初期化処理を使用します。任意の操作を呼び出す前に、このコードブロックを 1 回実行してください。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数を解析します。
$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => true],
    "endpoint" => ['help' => 'カスタムエンドポイント(任意)。', 'required' => false],
    "bucket"   => ['help' => 'バケット名。', 'required' => true],
];

$longopts = array_map(fn($key) => "$key:", array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $meta) {
    if ($meta['required'] && empty($options[$key])) {
        echo "エラー: --$key は必須です。{$meta['help']}\n";
        exit(1);
    }
}

$region = $options['region'];
$bucket = $options['bucket'];

// 環境変数から認証情報を読み込みます。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// クライアントを初期化します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);

if (isset($options['endpoint'])) {
    $cfg->setEndpoint($options['endpoint']);
}

$client = new Oss\Client($cfg);

保持ポリシーの作成

initiateBucketWorm を呼び出して保持ポリシーを作成します。ポリシーは指定された保持期間で「ロック解除済み」の状態で開始されます。

必須パラメーター:

パラメーター説明
bucketstringポリシーを適用するバケット。
retentionPeriodInDaysint保持期間(日単位)。有効値:1~25,550(約 70 年)。
// 保持期間を 3 日とする InitiateBucketWormRequest を作成します。
$request = new Oss\Models\InitiateBucketWormRequest(
    bucket: $bucket,
    initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
        retentionPeriodInDays: 3
    )
);

$result = $client->initiateBucketWorm($request);

printf(
    "状態コード: %s\n" .
    "リクエスト ID: %s\n" .
    "WORM ID: %s\n",
    $result->statusCode,
    $result->requestId,
    $result->wormId
);

返された wormId を保存してください。ポリシーのロックや延長時に必要になります。

保持ポリシーのロック

completeBucketWorm を呼び出してポリシーをロックします。ロック後は、ポリシーが恒久的かつコンプライアンス対応の状態となり、キャンセルできなくなります。また、保持期間は延長のみ可能で、短縮は一切できません。

重要

ポリシーのロックは取り消しできません。ロック前に保持期間が正しいことを必ず確認してください。

必須パラメーター:

パラメーター説明
bucketstringロック対象のバケット。
wormIdstringポリシー作成時に返された WORM ID。
// 引数リストに --worm-id を追加します。
$optsdesc['worm-id'] = ['help' => '保持ポリシーの WORM ID。', 'required' => true];
$wormId = $options['worm-id'];

$request = new Oss\Models\CompleteBucketWormRequest(
    bucket: $bucket,
    wormId: $wormId
);

$result = $client->completeBucketWorm($request);

printf(
    "状態コード: %s\n" .
    "リクエスト ID: %s\n",
    $result->statusCode,
    $result->requestId
);

API の仕様については、「CompleteBucketWorm」をご参照ください。

保持ポリシーの照会

getBucketWorm を呼び出して、現在のポリシー構成およびステータスを取得します。

必須パラメーター:

パラメーター説明
bucketstring照会対象のバケット。
$request = new Oss\Models\GetBucketWormRequest(bucket: $bucket);

$result = $client->getBucketWorm($request);

printf(
    "状態コード: %s\n" .
    "リクエスト ID: %s\n" .
    "WORM 構成: %s\n",
    $result->statusCode,
    $result->requestId,
    var_export($result->wormConfiguration, true)
);

返される wormConfiguration には、ポリシーのステータス(ロック済み/ロック解除済み)、WORM ID、および保持期間が含まれます。

保持期間の延長

extendBucketWorm を呼び出して、ロック済みのポリシーの保持期間を延長します。新しい値は現在の保持期間より大きくなければならず、短縮は許可されません。

必須パラメーター:

パラメーター説明
bucketstring延長対象のバケット。
wormIdstringポリシー作成時に返された WORM ID。
retentionPeriodInDaysint新しい合計保持期間(日単位)。現在の値より大きい必要があります。
// 引数リストに --worm-id を追加します。
$optsdesc['worm-id'] = ['help' => '保持ポリシーの WORM ID。', 'required' => true];
$wormId = $options['worm-id'];

// 新しい合計保持期間を設定します(現在の期間より大きくなければなりません)。
$request = new Oss\Models\ExtendBucketWormRequest(
    bucket: $bucket,
    wormId: $wormId,
    extendWormConfiguration: new Oss\Models\ExtendWormConfiguration(
        retentionPeriodInDays: 3
    )
);

$result = $client->extendBucketWorm($request);

printf(
    "状態コード: %s\n" .
    "リクエスト ID: %s\n",
    $result->statusCode,
    $result->requestId
);

ロック解除済みの保持ポリシーのキャンセル

abortBucketWorm を呼び出して、まだロックされていない保持ポリシーをキャンセルします。ロック済みのポリシーはキャンセルできません。

必須パラメーター:

パラメーター説明
bucketstringキャンセル対象のバケット。
$request = new Oss\Models\AbortBucketWormRequest(bucket: $bucket);

$result = $client->abortBucketWorm($request);

printf(
    "状態コード: %s\n" .
    "リクエスト ID: %s\n",
    $result->statusCode,
    $result->requestId
);

参考資料