Object Storage Service (OSS) SDK for PHP 2.0 を使用して、OSS バケット上の時刻ベースの保持ポリシーを管理します。保持ポリシーは、Write Once Read Many(WORM)制約を適用します。つまり、保持期間が満了するまで、当該バケット内のオブジェクトは削除または上書きできません。保持期間は 1 日~70 年の範囲で設定可能です。
本トピックでは、保持ポリシーの作成、ロック、照会、延長、およびキャンセル方法について説明します。
仕組み
バケットレベルの保持ポリシーは、以下のライフサイクルに従います:
作成 — 保持期間を設定します。ポリシーは初期状態で「ロック解除済み」となり、この状態ではキャンセルが可能です。
ロック — ポリシーをロックして、恒久的かつコンプライアンス対応の状態に変更します。ロック済みのポリシーは削除できず、保持期間は延長のみ可能で、短縮は一切できません。
照会 — 任意のタイミングで、現在のポリシー構成およびステータスを取得できます。
延長 — ロック済みのポリシーの保持期間を延長します。
キャンセル — ポリシーがまだロック解除済みの状態のときに中止します。
注意事項
サンプルコードではリージョン 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);保持ポリシーのロック
completeBucketWorm を呼び出してポリシーをロックします。ロック後は、ポリシーが恒久的かつコンプライアンス対応の状態となり、キャンセルできなくなります。また、保持期間は延長のみ可能で、短縮は一切できません。
ポリシーのロックは取り消しできません。ロック前に保持期間が正しいことを必ず確認してください。
必須パラメーター:
| パラメーター | 型 | 説明 |
|---|---|---|
bucket | string | ロック対象のバケット。 |
wormId | string | ポリシー作成時に返された 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 を呼び出して、現在のポリシー構成およびステータスを取得します。
必須パラメーター:
| パラメーター | 型 | 説明 |
|---|---|---|
bucket | string | 照会対象のバケット。 |
$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、および保持期間が含まれます。
参考資料
InitiateBucketWorm — 保持ポリシーの作成
CompleteBucketWorm — 保持ポリシーのロック
AbortBucketWorm — ロック解除済みの保持ポリシーのキャンセル
GetBucketWorm — 保持ポリシーの照会
ExtendBucketWorm — 保持ポリシーの保持期間の延長