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」をご参照ください。