Object Storage Service (OSS) バケット内のオブジェクトの最終アクセス時刻に基づいてライフサイクルルールを設定できます。 このようなライフサイクルルールを設定すると、OSSはバケット内のオブジェクトのアクセスパターンを監視し、アクセスパターンに基づいてコールドデータを識別し、階層データストレージとストレージコストの削減のために指定されたストレージクラスにコールドデータを自動的に移動します。
シナリオ
マルチメディア
Webサイトのビデオと画像をOSSバケットに保存した後、時間の経過とともに一部のデータにアクセスする頻度が低くなる場合があります。 アクセス頻度が低いデータの場合は、ストレージクラスを低頻度アクセス (IA) に変更する必要があります。 かなり前にアップロードされたが、それでも頻繁にアクセスされるデータについては、標準ストレージクラスを保持する必要があります。 バケット内のオブジェクトの最終アクセス時刻に基づいて、バケットのライフサイクルルールを設定できます。 このように、コールドデータとホットデータは異なるストレージクラスに保存され、ストレージコストが削減されます。
アルバムまたはネットワークディスク
バケットは、フォトアルバムの保存やネットワークディスクとして使用できます。 アクセス頻度の低いデータのストレージコストを削減しながら、データへのリアルタイムアクセスを維持したい場合は、ライフサイクルルールを設定して、最後のアクセス時刻から指定した日数後にデータをIAストレージクラスに自動的に移動できます。
ライフサイエンス
大量のデータが遺伝子配列決定において生成される。 多くの場合、データが頻繁にアクセスされるかどうかは、データの最終変更時刻ではなく、最終アクセス時刻に基づいて判断される。 ログ分析またはその他の方法に基づいて、コールドデータとホットデータの階層化ストレージを手動で実装できます。 階層ストレージのより効率的な方法は、最終アクセス時間に基づいてライフサイクルルールを設定することです。これにより、OSSはコールドデータとホットデータを自動的に識別し、適切なストレージクラスにデータを保存できます。 同じライフサイクルルールで、最終アクセス時刻と最終変更時刻に基づいてポリシーを指定し、データをより柔軟に管理することもできます。
制限事項
データ削除
最終アクセス時刻に基づくライフサイクルルールを使用してデータを削除することはできません。
マッチ条件
現在、ライフサイクルルールはプレフィックスとタグに基づく照合のみをサポートしています。 ワイルドカードマッチング、サフィックスマッチング、および正規表現マッチングはサポートされていません。
部品ライフサイクル
名前が重複するプレフィックスを含むオブジェクトに対して、部品ライフサイクルポリシーを含む2つ以上のライフサイクルルールを設定することはできません。 例:
- 例 1
バケットの部品ライフサイクルポリシーを含むライフサイクルルールを設定する場合、名前にバケット内のプレフィックスが含まれるオブジェクトの部品ライフサイクルポリシーを含む別のライフサイクルルールを設定することはできません。
- 例 2
バケット内のdir1プレフィックスを含むオブジェクトの部品ライフサイクルポリシーを含むライフサイクルルールを設定する場合、dir1/dir2など、名前に重複するプレフィックスを含むオブジェクトの部品ライフサイクルポリシーを含む別のライフサイクルルールを設定することはできません。
使用上の注意
ライフサイクルルールの数
OSSコンソールで最大100のライフサイクルルールを設定できます。 同じライフサイクルルールの最終アクセス時刻と最終変更時刻に基づいてポリシーを指定することもできます。 100を超えるライフサイクルルールを設定する場合は、OSS SDKまたはossutilを使用します。
料金
オブジェクトの監視および管理料金
バケットのアクセス追跡を有効にすると、オブジェクトのモニタリングと管理の料金が発生します。 ただし、料金は請求されません。
最小保存期間未満で保存されるIAオブジェクトのストレージ料金
IAオブジェクトの最小保存期間は30日です。 最小保存期間未満で保存されたIAオブジェクトのストレージ使用量に対して課金されます。 次の例は、オブジェクトの最終アクセス時間に基づいてライフサイクルルールを設定するときに、最小ストレージ期間未満で保存されたIAオブジェクトのストレージ使用量に対してIAオブジェクトが課金される方法を示しています。
例1: OSSは、設定されたライフサイクルルールに基づいて、オブジェクトが作成されてから10日後に標準オブジェクトをIAオブジェクトに変換し、5日後にIAオブジェクトを標準オブジェクトに変換します。 この場合、最小保存期間 (15日) 未満で保存されたIAオブジェクトのストレージ使用量に対して課金されます。
例2: OSSは、設定されたライフサイクルルールに基づいて、オブジェクトが作成されてから10日後に標準オブジェクトをIAオブジェクトに変換し、15日後にIAオブジェクトを削除します。 この場合、最小保存期間 (5日) 未満で保存されたIAオブジェクトのストレージ使用量に対して課金されます。
詳細については、「ストレージ料金」をご参照ください。
IAオブジェクトの取得料金
IA オブジェクトにアクセスすると、取得した IA オブジェクトのサイズに基づいてデータ取得料金が発生します。 詳細については、「データ処理料金」をご参照ください。
API 呼び出し料金
ライフサイクルルールを使用してオブジェクトのストレージクラスを変換すると、API操作呼び出し料金が課金されます。 詳細については、「API操作呼び出し料金」をご参照ください。
上書きセマンティクス
PutBucketLifecycle操作は、バケットに設定されているライフサイクルルールの既存の設定を上書きします。 たとえば、Rule1という名前のライフサイクルルールがバケットに設定されていて、Rule1に基づいてバケットにRule2という名前のライフサイクルルールを設定する場合は、次の操作を実行します。
- GetBucketLifecycle操作を呼び出してRule1を照会します。
- Rule1に基づいてバケットのRule2を設定します。
- PutBucketLifecycle操作を呼び出して、バケットのライフサイクルルール設定を更新します。 この場合、Rule1とRule2がバケットに設定されます。
有効期間
OSSは、ルールが作成されてから24時間以内にライフサイクルルールを読み込みます。 ライフサイクルルールがロードされた後、OSSは毎日08:00:00 (UTC + 8) にルールを実行します。
完了時間
タグを含まないライフサイクルルール
OSSは、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (ウランカブ) 、中国 (深セン) 、シンガポールの各リージョンのライフサイクルルールに基づいて、24時間以内に最大10億のライフサイクル管理操作 (ストレージクラスの変換や部品ライフサイクルなど) を実行できます。 ライフサイクルルールに基づくライフサイクル管理操作の数が10億を超える場合、操作の実行に必要な時間は24時間を超える可能性があります。
24時間以内に他のリージョンで最大100万のライフサイクル管理操作を実行できます。 ライフサイクルルールに基づくライフサイクル管理操作の数が100万を超える場合、操作の実行に必要な時間は24時間を超える可能性があります。
タグを含むライフサイクルルール
OSSは、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (ウランカブ) 、中国 (深セン) 、シンガポールの各リージョンのライフサイクルルールに基づいて、24時間以内に最大500万件のライフサイクル管理操作 (ストレージクラスの変換や部品ライフサイクルなど) を実行できます。 ライフサイクルルールに基づくライフサイクル管理操作の数が500万を超える場合、操作の実行に必要な時間は24時間を超える可能性があります。
24時間以内に他のリージョンで最大5,000万のライフサイクル管理操作を実行できます。 ライフサイクルルールに基づくライフサイクル管理操作の数が50万を超える場合、操作の実行に必要な時間は24時間を超える可能性があります。
最終アクセス時刻を更新するためのポリシー
[ライフサイクル] ページでバケットの [アクセストラッキングの有効化] をオンにすると、バケット内のすべてのオブジェクトの最初の最終アクセス時刻が、アクセストラッキングが有効化されている時刻に設定されます。 24時間以内に同じオブジェクトにアクセスするために複数のGetObjectリクエストが送信された場合、オブジェクトの最終アクセス時間は、最初のGetObjectリクエストによってオブジェクトにアクセスされた時間に設定されます。 PutObjectやCopyObjectリクエストなどの他のリクエストがオブジェクトにアクセスするために送信された場合、オブジェクトの最終アクセス時間はリクエストごとに更新されます。
オブジェクトの最終アクセス時間を更新する操作の詳細については、オブジェクトの最終アクセス時間を更新する操作は何ですか?
サポートされるストレージクラス
最終アクセス時間に基づいてライフサイクルルールを使用して、オブジェクトを標準からIAに移動し、オブジェクトにアクセスした後にオブジェクトをIAから標準に戻すかどうかを指定できます。
最終アクセス時間に基づいたライフサイクルルールを使用して、オブジェクトを標準またはIAからアーカイブ、コールドアーカイブ、ディープコールドアーカイブ、またはアーカイブからコールドアーカイブまたはディープコールドアーカイブに移動できます。 標準またはIAからアーカイブ、コールドアーカイブ、またはディープコールドアーカイブにオブジェクトを移動する場合は、
チケットを起票し、まず必要な権限を申請します。 アプリケーションが承認されたら、オブジェクトを移動するストレージクラスを指定する必要があります。重要アプリケーションが承認された後、最終アクセス時間に基づくライフサイクルルールを使用して、オブジェクトを標準またはIAからアーカイブ、コールドアーカイブ、またはディープコールドアーカイブに移動する場合、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブオブジェクトの最終アクセス時間は、バケットのアクセス追跡が有効になった時間です。
OSS-HDFSが有効になっているバケットのライフサイクルルールの設定
OSS-HDFSが有効になっているバケット内のすべてのオブジェクトと一致するようにライフサイクルルールを設定または変更するには、NOT要素を使用して、. dlsdata /
ディレクトリに移動します。 これにより、ライフサイクルルールによってトリガーされるストレージクラス変換操作が、OSS-HDFSデータに対するデータの読み取りおよび書き込み操作に影響を与えるのを防ぎます。
手順
OSSコンソールの使用
にログインします。OSSコンソール.
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーで、データ管理 > ライフサイクル.
On theライフサイクルページ、オンにするアクセストラッキングの有効化をクリックし、ルールの作成.
[ルールの作成] パネルで、パラメーターを設定します。 下表にパラメーターを示します。
バージョン化されていないバケットのパラメータ
セクション
パラメーター
説明
基本設定
ステータス
ライフサイクルルールのステータスを指定します。 有効な値: 有効および無効。
ライフサイクルルールを有効にすると、OSSは指定されたオブジェクトに対して指定されたアクションを実行します。
ライフサイクルルールを無効にすると、ルールに基づくライフサイクル管理タスクが中断されます。
ポリシー
ライフサイクルルールを有効にするオブジェクトを指定します。 有効な値: 指定されたプレフィックスを持つオブジェクトとバケット全体に適用。
重複するプレフィックスを許可
重複するプレフィックスを許可するかどうかを指定します。 デフォルトでは、各ライフサイクルルールのプレフィックスが重複するかどうかをチェックします。 たとえば、バケットに既存のライフサイクルルール (ルール1) があり、重複するプレフィックスを含む別のライフサイクルルール (ルール2) を設定する場合:
ルール1
オブジェクトが最後にアクセスされてから180日後に、名前にdir1/ プレフィックスが含まれるすべてのオブジェクトをバケット内で削除します。
ルール2
オブジェクトが最後にアクセスされてから30日後に、バケット内のdir1/dir2/ プレフィックスを名前に含むすべてのオブジェクトをアーカイブオブジェクトに変換します。
このチェックボックスをオンにしないと、dir1/dir2/ ディレクトリ内のオブジェクトが2つのライフサイクルルールに一致することが検出され、ルール2を作成できません。
このチェックボックスをオンにすると、ルール2が作成されます。 dir1/dir2/ ディレクトリ内のオブジェクトは、30日後にアーカイブオブジェクトに変換されます。 dir1/ ディレクトリ内の他のオブジェクトは、180日後にIAオブジェクトに変換されます。
接頭辞
ライフサイクルルールを有効にするオブジェクトの名前にプレフィックスを指定します。
プレフィックスをimgに設定した場合、imgtest.pngやimg/example.jpgなど、名前にimgプレフィックスが含まれるすべてのオブジェクトがライフサイクルルールと一致します。
プレフィックスをimg/ に設定した場合、img/example.jpgやimg/test.jpgなど、名前がimg /プレフィックスで始まるすべてのオブジェクトがライフサイクルルールと一致します。
タグ
タグを指定します。 このルールは、指定されたタグを含むオブジェクトに対してのみ有効です。 たとえば、[指定されたプレフィックスを持つオブジェクト] を選択し、プレフィックスをimgに設定し、keyがaで値が1のタグを指定した場合、名前にimgプレフィックスを含み、a=1のタグを持つすべてのオブジェクトにルールが適用されます。 オブジェクトタグの詳細については、「オブジェクトへのタグの追加」をご参照ください。
ではない
指定された名前プレフィックスとタグを持つオブジェクトに対してライフサイクルルールが有効にならないように指定します。
重要NOTをオンにすると、ライフサイクルルールにPrefixパラメーターとTagパラメーターの少なくとも1つを指定する必要があります。
NOTパラメーターに指定されたタグのキーは、タグパラメーターに指定されたキーと同じにすることはできません。
NOTをオンにすると、ライフサイクルルールに部品の有効期限ポリシーを含めることはできません。
ファイルサイズ
ライフサイクルルールを有効にするオブジェクトのサイズを指定します。
最小サイズ: 指定されたサイズより大きいサイズのオブジェクトに対してのみライフサイクルルールが有効になるように指定します。 オブジェクトの最小サイズは、0 Bより大きく5テラバイト未満で指定できます。
最大サイズ: 指定されたサイズより小さいサイズのオブジェクトに対してのみライフサイクルルールが有効になるように指定します。 オブジェクトの最大サイズは、0 Bより大きく、5テラバイト以下で指定できます。
重要同じライフサイクルルールで最小オブジェクトサイズと最大オブジェクトサイズを指定する場合は、次の項目に注意してください。
最大オブジェクトサイズが最小オブジェクトサイズより大きいことを確認します。
ライフサイクルルールに部品ポリシーを含めることはできません。
削除マーカーを削除するポリシーを含めることはできません。
オブジェクトに対するポリシー
ファイル時間ポリシー
有効期限ポリシーを指定します。 [有効期間 (日)] 、[有効期限] 、または 有効になっていません を選択できます。 有効になっていません を選択した場合、オブジェクトライフサイクルルールは設定されません。
ライフサイクルベースのルール
ストレージクラス変換のポリシーを指定します。 有効な値:
IA (アクセス後に変換されない)
IA (アクセス後に標準に変換)
アーカイブ
コールドアーカイブ
ディープコールドアーカイブ
たとえば、[アクセス時間] を選択し、有効期間 を30に設定し、有効期間が経過した後にオブジェクトのストレージクラスをIA (アクセス後に変換しない) に変更すると、2021年10月1日に最後にアクセスされたオブジェクトのストレージクラスは2021年10月1日にIAに変換されます。
フラグメントに対するポリシー
フラグメント期限切れポリシー
期限切れの部品に対して実行する操作を指定します。 タグパラメーターも設定した場合、このパラメーターは使用できません。 [有効期間 (日)] 、[有効期限] 、または 有効になっていません を選択できます。 有効になっていません を選択した場合、部品ライフサイクルポリシーは設定されません。
重要ライフサイクルルールには、オブジェクト有効期限ポリシーと部品有効期限ポリシーの少なくとも1つが含まれている必要があります。
フラグメントに対するルール
有効期間または有効期限に基づいて、部品の有効期限を指定します。 期限切れのパーツは自動的に削除され、復元できません。
バージョン化されたバケットのパラメータ
基本設定 セクションと フラグメントに対するポリシー セクションのパラメーターを、バージョン化されていないバケットのパラメーターと同じ方法で設定します。 次の表では、バージョン化されていないバケットに設定したパラメーターとは異なるパラメーターのみを説明します。
セクション
パラメーター
説明
現在のバージョンのポリシー
削除マーカーの削除
バケットのバージョン管理を有効にすると、オブジェクトライフサイクルパラメーターに [削除マーカー] オプションが追加されます。 その他のパラメーターは、バージョン化されていないバケットに対して設定できるパラメーターと同じです。
削除マーカーの削除を選択した場合、オブジェクトに削除マーカーであるバージョンが1つしかない場合、OSSは削除マーカーの有効期限が切れたと見なし、削除マーカーを削除します。 オブジェクトに複数のバージョンがあり、オブジェクトの現在のバージョンが削除マーカーの場合、OSSは削除マーカーを保持します。 詳細については、「マーカーの削除」をご参照ください。
以前のバージョンに対するポリシー
ファイル時間ポリシー
以前のバージョンの有効期限を指定します。 [有効期間 (日)] と 有効になっていません を選択できます。 有効になっていません を選択した場合、オブジェクトライフサイクルルールは設定されません。
ライフサイクルベースのルール
オブジェクトが以前のバージョンになってから保持できる日数を指定します。 有効期限が切れた翌日、以前のバージョンは指定されたストレージクラスに移動されます。 たとえば、有効期間 (日) を30に設定した場合、2021年9月1日に以前のバージョンになったオブジェクトは、2021年10月1日に指定されたストレージクラスに移動されます。
重要次のバージョンが生成された時刻に基づいて、オブジェクトが以前のバージョンになるときを判断できます。
クリックOK.
ライフサイクルルールの作成後、ライフサイクルルールリストでルールを表示できます。
OSS SDKの使用
最終アクセス時刻に基づいてライフサイクルルールを作成するには、OSS SDK for JavaとOSS SDK for Goのみを使用できます。 最終アクセス時刻に基づいてライフサイクルルールを作成する前に、バケットのアクセス追跡機能を有効にする必要があります。 最終アクセス時刻に基づいてライフサイクルルールを設定するために使用されるサンプルコードについては、「概要」をご参照ください。
Java
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;
java.util.ArrayListをインポートします。java.util.Listをインポートします。public classデモ {
public static void main(String[] args) throws Exception {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
String endpoint = " https://oss-cn-hangzhou.aliyuncs.com ";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例: examplebucket.
String bucketName = "examplebucket";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
ossClient.putBucketAccessMonitor(bucketName, AccessMonitor.AccessMonitorStatus.Enabled.toString());
// ライフサイクルルールを作成し、IDをrule1に設定します。 名前にログプレフィックスが含まれ、サイズが64 KB以下のオブジェクトのストレージクラスを、オブジェクトが最後にアクセスされてから30日後にIAに変更するように指定します。 さらに、ログプレフィックスを含む名前のオブジェクトが、オブジェクトに再度アクセスしたときにIAオブジェクトとして保存されるように指定します。
LifecycleRule lifecycleRule = new LifecycleRule("rule1", "logs", LifecycleRule.RuleStatus.Enabled);
List<LifecycleRule> lifecycleRuleList = new ArrayList<LifecycleRule>();
SetBucketLifecycleRequest setBucketLifecycleRequest=新しいSetBucketLifecycleRequest(bucketName);
LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setStorageClass(StorageClass.IA);
storageTransition.setExpirationDays(30);
storageTransition.setIsAccessTime(true);
storageTransition.setReturnToStdWhenVisit(false);
storageTransition.setAllowSmallFile(true);
List<LifecycleRule.StorageTransition> storageTransitionList = new ArrayList<LifecycleRule.StorageTransition>();
storageTransitionList.add(storageTransition);
lifecycleRule.setStorageTransition(storageTransitionList);
lifecycleRuleList.add(lifecycleRule);
// ライフサイクルルールを作成し、IDをrule2に設定します。 名前にdirプレフィックスが含まれ、サイズが64 KBを超える以前のバージョンのオブジェクトを、最後にアクセスしてから10日後にIAに変更するように指定します。 さらに、名前にdirプレフィックスが含まれるオブジェクトのストレージクラスを、オブジェクトに再度アクセスしたときにStandardに変更するように指定します。
LifecycleRule lifecycleRule2 = new LifecycleRule("rule2", "dir", LifecycleRule.RuleStatus.Enabled);
LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition = new LifecycleRule.NoncurrentVersionStorageTransition();
noncurrentVersionStorageTransition.setStorageClass(StorageClass.IA);
noncurrentVersionStorageTransition.setNoncurrentDays (10);
noncurrentVersionStorageTransition.setIsAccessTime(true);
noncurrentVersionStorageTransition.setReturnToStdWhenVisit(true);
noncurrentVersionStorageTransition.setAllowSmallFile(false);
リスト <LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitionList = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
noncurrentVersionStorageTransitionList.add(noncurrentVersionStorageTransition);
lifecycleRule2.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitionList);
lifecycleRuleList.add(lifecycleRule2);
setBucketLifecycleRequest.setLifecycleRules(lifecycleRuleList);
// ライフサイクルルールを設定します。
ossClient.setBucketLifecycle(setBucketLifecycleRequest);
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
Python
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからLifecycleRule、BucketLifecycle、StorageTransition、NoncurrentVersionStorageTransitionをインポートする
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# ライフサイクルルールを作成し、IDをrule1に設定します。 名前にログプレフィックスが含まれ、サイズが64 KBを超えるオブジェクトのストレージクラスを、オブジェクトが最後にアクセスされてから30日後にIAに変更するように指定します。 さらに、オブジェクトが再度アクセスされたときに、オブジェクトが引き続きIAオブジェクトとして格納されるように指定します。
rule1 = LifecycleRule('rule1', 'logs', status=LifecycleRule.ENABLED)
rule1.storage_transitions = [StorageTransition(days=30、storage_class=oss2.BUCKET_STORAGE_CLASS_IA、is_access_time=True、return_to_std_when_visit=False、allow_small_file=True)]
# ライフサイクルルールを作成し、IDをrule2に設定します。 名前にdirプレフィックスが含まれ、サイズが64 KBを超える以前のバージョンのオブジェクトのストレージクラスを、オブジェクトが最後にアクセスされてから10日後にIAに変更するように指定します。 さらに、オブジェクトが再度アクセスされたときに、オブジェクトのストレージクラスをStandardに変更するように指定します。
rule2 = LifecycleRule('rule2', 'dir', status=LifecycleRule.ENABLED)
rule2.noncurrent_version_sotrage_transitions = [NoncurrentVersionStorageTransition(10、oss2.BUCKET_STORAGE_CLASS_IA、is_access_time=True、return_to_std_when_visit=True、allow_small_file=False)]
lifecycle = BucketLifecycle([rule1, rule2])
# ライフサイクルルールを作成します。
result = bucket.put_bucket_lifecycle (ライフサイクル)
print('ライフサイクル設定が成功しました。 '+ str(result.status))
Go
パッケージメイン
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func main() {
// バケットの名前を指定します。
bucketName := "yourBucketName"
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
isTrue := true
isFalse := false
// ライフサイクルルールを設定し、IDをrule1に設定します。 名前にログプレフィックスが含まれ、サイズが64 KB以下のオブジェクトのストレージクラスを、オブジェクトが最後にアクセスされてから30日後にIAに変換するように指定します。 さらに、ログプレフィックスを含む名前のオブジェクトが、オブジェクトに再度アクセスしたときにIAオブジェクトとして保存されるように指定します。
rule1 := oss.LifecycleRule {
ID: "rule1" 、プレフィックス: "logs" 、ステータス: "Enabled" 、トランジション: []oss.LifecycleTransition {
{
日: 30,
StorageClass: oss.StorageIA、IsAccessTime: &isTrue、ReturnToStdWhenVisit: &isFalse、AllowSmallFile: &isTrue、},
},
}
// ライフサイクルルールを設定し、IDをrule2に設定します。 名前にdirプレフィックスが含まれ、サイズが64 KBを超える以前のバージョンのオブジェクトを、最後にアクセスしてから10日後にIAに変換するように指定します。 さらに、名前にdirプレフィックスが含まれているオブジェクトのストレージクラスを、オブジェクトに再度アクセスしたときにStandardに変換するように指定します。
rule2 := oss.LifecycleRule {
ID: "rule2" 、プレフィックス: "dir" 、ステータス: "Enabled" 、NonVersionTransitions: []oss.LifecycleVersionTransition {
{
NoncurrentDays: 10、StorageClass: oss.StorageIA、IsAccessTime: &isTrue、ReturnToStdWhenVisit: &isTrue、AllowSmallFile: &isFalse、},
},
}
// ライフサイクルルールを設定します。
var rules = []oss.LifecycleRule{rule1, rule2}
err = client.SetBucketLifecycle(bucketName, rules)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("% s\n", "set bucket life cycle success")
}
ossutilの使用
ossutilを使用してライフサイクルルールを設定できます。 詳細は、「ライフサイクル」をご参照ください。
OSS APIの使用
ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketLifecycle」をご参照ください。
よくある質問
同じバケット内の同じ名前のプレフィックスを持つオブジェクトに対して、前回の変更時刻に基づいてライフサイクルルールを設定し、同時に最後のアクセス時刻に基づいてライフサイクルルールを設定するとどうなりますか?
たとえば、examplebucketという名前のバケットに2つのライフサイクルルールを設定します。 最初のルールでは、examplebucketのdocプレフィックスを名前に含むすべてのオブジェクトが、オブジェクトが最後に変更されてから30日後に削除されることを指定します。 2番目のルールでは、examplebucketのdocプレフィックスを名前に含むすべてのオブジェクトのストレージクラスが、オブジェクトが最後にアクセスされてから30日後にIAに変換されることを指定します。
この場合、OSSは低料金のライフサイクルルールを優先的に適用するため、最初のライフサイクルルールのみが有効になります。 最初のルールが適用された場合、ルールに基づいて指定されたオブジェクトが削除された後は課金されません。 2番目のルールが適用されている場合、指定されたオブジェクトのストレージクラスがルールに基づいて変換された後、ストレージ料金またはデータ取得料金が請求されます。
ルールを変更した後、ライフサイクルルールはいつ有効になり、元のルールが適用されるオブジェクトはどうなりますか。
たとえば、名前にer
プレフィックスが含まれるオブジェクトのライフサイクルルールを設定して、オブジェクトが最後にアクセスされてから30日後にオブジェクトのストレージクラスをIAに変換し、IAに変換されてから30日後にIAオブジェクトにアクセスされたときにStandardに戻ります。 この場合、ライフサイクルルールで指定したプレフィックスをer
からre
に変更した場合、名前がerでプレフィックスが付けられたオブジェクトが最後にアクセスされてから35日後に、これらのオブジェクトのストレージクラスはすでにIAに変換されており、元のライフサイクルルールに基づいてStandardに戻すことはできません。 ライフサイクルルールを変更すると、名前にreプレフィックスが含まれるオブジェクトの最終アクセス時刻が、バケットのアクセス追跡を有効にした時刻に設定されます。
バージョン管理されたバケットの最終アクセス時間に基づいてライフサイクルルールを設定すると、オブジェクトはどのように保存されますか?
バージョン管理されたバケット内の各オブジェクトには、一意のバージョンIDがあります。 異なるバージョンIDを持つオブジェクトは別々に格納されます。 バージョン管理されたバケットの最終アクセス時間に基づいてライフサイクルルールを設定した後、オブジェクトの現在のバージョンのストレージクラスが、同じオブジェクトの以前のバージョンのストレージクラスと異なる場合があります。
アクセス追跡を無効にできますか?
はい、アクセス追跡を無効にできます。 バケットのアクセス追跡を無効にする前に、最終アクセス時刻に基づくライフサイクルルールがバケットに設定されていないことを確認してください。 バケットのアクセス追跡を無効にすると、バケット内のオブジェクトの最終アクセス時刻の追跡が停止されます。 次回バケットのアクセス追跡を有効にすると、バケット内のオブジェクトの最終アクセス時刻が更新されます。