最終更新時間に基づいてライフサイクルルールを作成し、クラウドボックスの OSS バケット内のオブジェクトとパートを定期的に削除できます。これにより、ストレージコストを節約できます。
前提条件
クラウドボックスの OSS は、中国 (杭州)、中国 (上海)、中国 (深圳)、中国 (河源)、中国 (北京)、および中国 (成都) リージョンでのみサポートされています。
クラウドボックスが購入済みであること。詳細については、「クラウドボックスの購入」をご参照ください。
クラウドボックスの OSS に Virtual Private Cloud (VPC) と vSwitch が作成されていること。詳細については、「VPC と vSwitch の作成」をご参照ください。
VPC 内部ネットワークがセットアップされ、安全な接続を提供するために単一のトンネルが構成されていること。この機能を申請するには、テクニカルサポートにお問い合わせください。
制限事項
プレフィックスが重複するオブジェクトに対して、パートの有効期限切れポリシーを含むライフサイクルルールを 2 つ以上設定することはできません。例:
例 1
バケット全体にパートの有効期限切れポリシーを含むライフサイクルルールを設定した場合、そのバケット内の任意のプレフィックスを持つオブジェクトに対して、パートの有効期限切れポリシーを持つ別のライフサイクルルールを設定することはできません。
例 2
バケット内のプレフィックス dir1 を持つオブジェクトにパートの有効期限切れポリシーを持つライフサイクルルールを設定した場合、同じバケット内で dir1/dir2 のような重複するプレフィックスを持つオブジェクトに対して、パートの有効期限切れポリシーを持つ別のライフサイクルルールを設定することはできません。
使用上の注意
ルール数
コンソールでは最大 100 個のライフサイクルルールを設定できます。それ以上のルールを設定するには、ソフトウェア開発キット (SDK) または ossutil コマンドラインインターフェイスを使用します。
上書きセマンティクス
PutBucketLifecycle 操作は、バケットのライフサイクルルールの既存の構成を上書きします。たとえば、Rule1 という名前のライフサイクルルールがバケットに設定されていて、そのバケットに Rule2 という名前の別のライフサイクルルールを設定する場合は、次の操作を実行します。
GetBucketLifecycle 操作を呼び出して Rule1 をクエリします。
Rule1 と Rule2 の両方をライフサイクルルールの構成に追加します。
PutBucketLifecycle 操作を呼び出して、バケットに Rule1 と Rule2 を作成します。
発効時間
OSS は、ルールが作成されてから 24 時間以内にライフサイクルルールをロードします。ライフサイクルルールがロードされると、OSS は毎日 08:00:00 (UTC + 08:00) にルールを実行します。
オブジェクトの最終更新時間とライフサイクルルールが実行される時間の間隔は 24 時間より長くなければなりません。たとえば、アップロードから 1 日後にオブジェクトを削除するようにバケットのライフサイクルルールを設定した場合、2020 年 7 月 20 日にアップロードされたオブジェクトは、オブジェクトがアップロードされた特定の時間に基づいて異なる日に削除されます。
2020 年 7 月 20 日の 08:00:00 (UTC + 08:00) より前にアップロードされたオブジェクトは、2020 年 7 月 21 日の 08:00:00 (UTC + 08:00) から 2020 年 7 月 22 日の 08:00:00 (UTC + 08:00) の間に削除されます。
2020 年 7 月 20 日の 08:00:00 (UTC + 08:00) 以降にアップロードされたオブジェクトは、2020 年 7 月 22 日の 08:00:00 (UTC + 08:00) から 2020 年 7 月 23 日の 08:00:00 (UTC + 08:00) の間に削除されます。
重要 ライフサイクルルールを更新すると、その日にルールに基づいて実行されるようにスケジュールされているタスクは一時停止されます。ライフサイクルルールを頻繁に更新しないことをお勧めします。
完了時間
タグを含まないライフサイクルルール
タグに基づかないライフサイクルルールの場合、オブジェクトの削除、ストレージタイプの変換、パートの有効期限切れを含む最大 10 億のライフサイクル管理操作を、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (深圳)、シンガポールの各リージョンで 24 時間以内に完了できます。ライフサイクルルールに基づくライフサイクル管理操作の数が 10 億を超えると、操作の完了に必要な時間が 24 時間を超える場合があります。
タグに基づかないライフサイクルルールの場合、他のリージョンでは最大 1 億のライフサイクル管理操作を 24 時間以内に完了できます。ライフサイクルルールに基づくライフサイクル管理操作の数が 1 億を超えると、操作の完了に必要な時間が 24 時間を超える場合があります。
タグを含むライフサイクルルール
タグに基づくライフサイクルルールの場合、オブジェクトの削除、ストレージタイプの変換、パートの有効期限切れを含む最大 5 億のライフサイクル管理操作を、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (深圳)、シンガポールの各リージョンで 24 時間以内に完了できます。ライフサイクルルールに基づくライフサイクル管理操作の数が 5 億を超えると、操作の完了に必要な時間が 24 時間を超える場合があります。
タグに基づくライフサイクルルールの場合、他のリージョンでは最大 5,000 万のライフサイクル管理操作を 24 時間以内に完了できます。ライフサイクルルールに基づくライフサイクル管理操作の数が 5,000 万を超えると、操作の完了に必要な時間が 24 時間を超える場合があります。
説明 バケットでバージョン管理が有効になっている場合、バケット内の各オブジェクトバージョンに対するライフサイクル管理操作は、適用される制限に対してカウントされます。
課金
ライフサイクルルールを使用してオブジェクトのストレージタイプを移行したり、オブジェクトを削除したりする際に発生する可能性のあるストレージおよびリクエスト料金については、「ライフサイクル料金」をご参照ください。
手順
OSS コンソールの使用
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。次に、バケットリストでターゲットバケットの名前をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[ルールの作成] をクリックします。[ライフサイクルルールの作成] パネルで、次の表の説明に従ってライフサイクルルールを設定します。
クラウドボックスの OSS バケットでバージョン管理が無効になっている場合
エリア | 設定項目 | 説明 |
基本設定 | ステータス | ライフサイクルルールのステータスを指定します。有効な値: 有効 および 無効。 |
ポリシー | ライフサイクルルールを適用するオブジェクトを指定します。有効な値: 指定されたプレフィックスを持つファイル および バケット全体。 |
プレフィックス | 一致させるオブジェクト名のプレフィックスを入力します。たとえば、名前が img で始まるオブジェクトを一致させるには、img と入力します。 |
パージポリシー | ファイルの有効期限ポリシー | オブジェクトがいつ期限切れになるかを指定するルールを設定します。有効な値: 有効期間 (日数)、有効期限日、および 無効。無効 を選択した場合、ファイルライフサイクルの設定は有効になりません。 |
ファイルの削除 | 期限切れのオブジェクトを削除するルールを設定します。 たとえば、有効期限日 を 2022 年 9 月 24 日に設定し、この日より前のデータが自動的に削除されるように指定した場合、2022 年 9 月 24 日より前に最終更新されたオブジェクトは自動的に削除され、回復できなくなります。 |
パートのクリーンアップ | パートの有効期限ポリシー | 期限切れのパートに対して実行する操作を設定します。パートの有効期限ポリシーには 有効期限 (日数) または 有効期限日 を選択するか、無効 を選択できます。無効 を選択した場合、パートの有効期限ポリシーは有効になりません。
重要 各ライフサイクルルールには、オブジェクトの有効期限ポリシーとパートの有効期限ポリシーの少なくとも 1 つが含まれている必要があります。 |
パートの削除 | パートライフサイクルの値に基づいてパートがいつ期限切れになるかを指定します。期限切れのパートは自動的に削除され、回復できません。 |
クラウドボックスの OSS バケットでバージョン管理が有効になっている場合
バージョン管理を有効にすると、[基本設定] および [パートのクリーンアップ] エリアの設定項目は、バージョン管理が無効な場合と同じになります。次の表では、異なる設定項目のみを説明します。
エリア | 設定項目 | 説明 |
現在のバージョン | 期限切れのオブジェクト削除マーカーのクリーンアップ | バケットのバージョン管理を有効にすると、[削除マーカーのクリーンアップ] パラメーターを設定できます。その他のパラメーターは、バージョン管理されていないバケットで設定できるものと同じです。 削除マーカーのクリーンアップ を選択し、オブジェクトに削除マーカーであるバージョンが 1 つしかない場合、OSS はその削除マーカーを期限切れとみなし、削除マーカーを削除します。オブジェクトに複数のバージョンがあり、オブジェクトの現在のバージョンが削除マーカーである場合、OSS は削除マーカーを保持します。削除マーカーの詳細については、「削除マーカー」をご参照ください。 |
以前のバージョン | ファイルの有効期限ポリシー | 以前のバージョンがいつ期限切れになるかを指定します。有効な値: 有効期間 (日数) および 無効。無効 を選択した場合、ファイルライフサイクルは有効になりません。 |
ファイルの削除 | 有効期限までの日数 N を設定します。オブジェクトの以前のバージョンは、以前のバージョンになってから N 日後に期限切れになり、期限切れの翌日に削除されます。たとえば、これを 30 に設定した場合、2021 年 9 月 1 日に以前のバージョンになったオブジェクトは、2021 年 10 月 1 日に削除されます。
重要 オブジェクトの次のバージョンが最後に変更された時間に基づいて、オブジェクトがいつ以前のバージョンになるかを判断できます。 |
Alibaba Cloud SDK の使用
ライフサイクルルールは、SDK for Java を使用してのみ設定できます。SDK のバージョンは 3.15.0 以降である必要があります。
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.LifecycleRule;
import com.aliyun.oss.model.SetBucketLifecycleRequest;
import java.util.List;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
public class Demo {
public static void main(String[] args) throws Exception {
// クラウドボックスの OSS バケットのデータエンドポイントを指定します。
String endpoint = "https://cb-f8z7yvzgwfkl9q0h****.cn-hangzhou.oss-cloudbox.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// クラウドボックスの OSS バケットの名前を指定します。例: examplebucket。
String bucketName = "examplebucket";
// クラウドボックスの OSS バケットが配置されているリージョンを指定します。
String region = "cn-hangzhou";
// CloudBox の ID を指定します。
String cloudBoxId = "cb-f8z7yvzgwfkl9q0h****";
// OSSClient インスタンスを作成します。
// OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
conf.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(new DefaultCredentialProvider(credentialsProvider.getCredentials()))
.clientConfiguration(conf)
.region(region)
.build();
try {
// SetBucketLifecycleRequest を作成します。
SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);
// ルール ID を設定します。
String ruleId0 = "rule0";
// プレフィックスが空のままの場合、ルールはバケット内のすべてのオブジェクトに適用されます。
String matchPrefix0 = null;
// 最終更新から 3 日後にオブジェクトを期限切れにします。
LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
request.AddLifecycleRule(rule);
// ライフサイクルルールを設定するリクエストを送信します。
ossClient.setBucketLifecycle(request);
// ライフサイクルルールを表示します。
List<LifecycleRule> listRules = ossClient.getBucketLifecycle(bucketName);
for(LifecycleRule rules : listRules){
System.out.println("ruleId="+rules.getId()+", matchPrefix="+rules.getPrefix()+", expirationDays="+rules.getExpirationDays());
}
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
REST API の使用
プログラムに高いカスタマイズ要件がある場合は、REST API リクエストを直接送信できます。これには、署名を生成するためのコードを手動で記述する必要があります。詳細については、「PutBucketLifecycle」をご参照ください。