Object Storage Service (OSS) にアップロードされたすべてのデータが、頻繁なアクセスを必要とするわけではありません。コンプライアンスやアーカイブの目的で、一部のデータは低頻度アクセスストレージクラスに保存する必要があります。また、不要になったバケットからデータを一括削除することもできます。ストレージコストを削減するために、最終更新日時に基づいてライフサイクルルールを設定できます。これらのルールにより、オブジェクトを定期的に低頻度アクセスストレージクラスに移行したり、オブジェクトを削除したりできます。
注意事項
オブジェクトの最終更新日時に基づいてライフサイクルルールを設定する前に、この機能について理解を深めておく必要があります。詳細については、「最終更新日時に基づくライフサイクルルール」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient の作成」をご参照ください。
ライフサイクルルールを設定するには、
oss:PutBucketLifecycle権限が必要です。ライフサイクルルールを表示するには、oss:GetBucketLifecycle権限が必要です。すべてのライフサイクルルールを削除するには、oss:DeleteBucketLifecycle権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。
ライフサイクルルールの設定
次のコードは、最終更新日時に基づいて examplebucket バケットのライフサイクルルールを設定する方法の例を示しています。ルールを設定した後、1 つ以上のルールを変更する場合は、「1 つ以上のライフサイクルルールの設定を変更する方法」をご参照ください。
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\LifecycleConfig;
use OSS\Model\LifecycleRule;
use OSS\Model\LifecycleAction;
// 環境変数からアクセス認証情報を取得します。 このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。 ご利用のリージョンの実際のエンドポイントに置き換えてください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を入力します。
$bucket= "examplebucket";
// ルール ID とファイルプレフィックスを設定します。
$ruleId0 = "rule0";
$matchPrefix0 = "A0/";
$ruleId1 = "rule1";
$matchPrefix1 = "A1/";
$lifecycleConfig = new LifecycleConfig();
$actions = array();
// 最終更新日時から 3 日後にオブジェクトを期限切れにします。
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3);
$lifecycleRule = new LifecycleRule($ruleId0, $matchPrefix0, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
$actions = array();
// 指定された日付より前に作成されたオブジェクトを期限切れにします。
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z');
$lifecycleRule = new LifecycleRule($ruleId1, $matchPrefix1, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");ライフサイクルルールの表示
次のコードは、examplebucket バケットのライフサイクルルールを表示する方法の例を示しています。
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。 このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。 ご利用のリージョンの実際のエンドポイントに置き換えてください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を入力します。
$bucket= "examplebucket";
$lifecycleConfig = null;
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$lifecycleConfig = $ossClient->getBucketLifecycle($bucket);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
print($lifecycleConfig->serializeToXml() . "\n");すべてのライフサイクルルールの削除
次のコードは、examplebucket バケットのすべてのライフサイクルルールを削除する方法の例を示しています。特定の 1 つ以上のライフサイクルルールを削除する場合は、「1 つ以上のライフサイクルルールを削除する方法」をご参照ください。
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。 このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。 ご利用のリージョンの実際のエンドポイントに置き換えてください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を入力します。
$bucket= "examplebucket";
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->deleteBucketLifecycle($bucket);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");関連ドキュメント
ライフサイクル管理の完全なサンプルコードについては、GitHub の例をご参照ください。
ライフサイクルルールを設定する API 操作については、「PutBucketLifecycle」をご参照ください。
ライフサイクルルールを表示する API 操作については、「GetBucketLifecycle」をご参照ください。
すべてのライフサイクルルールを削除する API 操作については、「DeleteBucketLifecycle」をご参照ください。