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

Object Storage Service:保持ポリシー (PHP SDK V2)

最終更新日:Nov 09, 2025

Object Storage Service (OSS) バケットに対して時間ベースの保持ポリシーを構成できます。保持ポリシーには、1 日から 70 年までの保持期間があります。このトピックでは、保持ポリシーの作成、クエリ、ロック、およびキャンセル方法について説明します。

使用上の注意

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

  • このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報の構成方法の詳細については、「アクセス認証情報の構成」をご参照ください。

保持ポリシーの作成

重要

バケットは、バージョン管理と保持ポリシーを同時に構成することはできません。したがって、バケットの保持ポリシーを作成する前に、バケットでバージョン管理が有効になっていないことを確認してください。

次のサンプルコードは、保持ポリシーを作成する方法の例を示しています。

<?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 シークレットを読み込みます。
$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。
);

ロックされていない保持ポリシーのキャンセル

次のサンプルコードは、ロックされていない保持ポリシーをキャンセルする方法の例を示しています。

<?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 シークレットを読み込みます。
$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);

// AbortBucketWormRequest オブジェクトを作成して、バケットのロックされていない保持ポリシーをキャンセルします。
$request = new Oss\Models\AbortBucketWormRequest(bucket: $bucket);

// abortBucketWorm メソッドを使用して、バケットのロックされていない保持ポリシーをキャンセルします。
$result = $client->abortBucketWorm($request);

// 返された結果を表示します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // 返された HTTP ステータスコード。
    'request id:' . $result->requestId // リクエストの要求 ID。リクエストの一意の識別子です。
);

保持ポリシーのクエリ

次のサンプルコードは、保持ポリシーをクエリする方法の例を示しています。

<?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], // (必須) バケットの名前を指定します。
    "worm-id" => ['help' => 'バケットの worm id', 'required' => True], // (必須) 保持ポリシーの ID を指定します。
];

// コマンドラインパラメータを解析するための長いオプションリストを生成します。
$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"]; // バケットの名前。
$wormId = $options["worm-id"]; // 保持ポリシーの ID。

// 環境変数を使用して AccessKey ID と AccessKey シークレットを読み込みます。
$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);

// GetBucketWormRequest オブジェクトを作成して、バケットの保持ポリシーをクエリします。
$request = new Oss\Models\GetBucketWormRequest(bucket: $bucket);

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

// 返された結果を表示します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // 返された HTTP ステータスコード。
    'request id:' . $result->requestId . PHP_EOL . // リクエストの要求 ID。リクエストの一意の識別子です。
    'worm config:' . var_export($result->wormConfiguration, true) // 保持ポリシーの構成。
);

保持ポリシーの保持期間の延長

次のサンプルコードは、保持ポリシーの保持期間を延長する方法の例を示しています。

<?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], // (必須) バケットの名前を指定します。
    "worm-id" => ['help' => 'バケットの worm id', 'required' => True], // (必須) 保持ポリシーの ID を指定します。
];

// コマンドラインパラメータを解析するための長いオプションリストを生成します。
$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"]; // バケットの名前。
$wormId = $options["worm-id"]; // 保持ポリシーの ID。

// 環境変数を使用して AccessKey ID と AccessKey シークレットを読み込みます。
$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);

// ExtendBucketWormRequest オブジェクトを作成して、バケットの保持ポリシーを 3 日間に延長します。
$request = new Oss\Models\ExtendBucketWormRequest(
    bucket: $bucket, 
    wormId: $wormId,
    extendWormConfiguration: new Oss\Models\ExtendWormConfiguration(
        retentionPeriodInDays: 3 // バケットの保持ポリシーを 3 日間に延長します。
));

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

// 返された結果を表示します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // 返された HTTP ステータスコード。
    'request id:' . $result->requestId // リクエストの要求 ID。リクエストの一意の識別子です。
);

参照

  • 保持ポリシーの作成方法の詳細については、「InitiateBucketWorm」をご参照ください。

  • ロックされていない保持ポリシーの削除方法の詳細については、「AbortBucketWorm」をご参照ください。

  • 保持ポリシーのクエリ方法の詳細については、「GetBucketWorm」をご参照ください。

  • 保持ポリシーの保持期間を延長するために呼び出すことができる API 操作の詳細については、「ExtendBucketWorm」をご参照ください。