このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

最終アクセス時刻に基づくライフサイクルルール

更新日時2025-01-10 06:51

Object Storage Service (OSS) バケット内のオブジェクトの最終アクセス時刻に基づいてライフサイクルルールを設定できます。 このようなライフサイクルルールを設定すると、OSSはバケット内のオブジェクトのアクセスパターンを監視し、アクセスパターンに基づいてコールドデータを識別し、階層データストレージとストレージコストの削減のために指定されたストレージクラスにコールドデータを自動的に移動します。

シナリオ

  • マルチメディア

    Webサイトのビデオと画像をOSSバケットに保存した後、時間の経過とともに一部のデータにアクセスする頻度が低くなる場合があります。 アクセス頻度が低いデータの場合は、ストレージクラスを低頻度アクセス (IA) に変更する必要があります。 かなり前にアップロードされたが、それでも頻繁にアクセスされるデータについては、標準ストレージクラスを保持する必要があります。 バケット内のオブジェクトの最終アクセス時刻に基づいて、バケットのライフサイクルルールを設定できます。 このように、コールドデータとホットデータは異なるストレージクラスに保存され、ストレージコストが削減されます。

  • アルバムまたはネットワークディスク

    バケットは、フォトアルバムの保存やネットワークディスクとして使用できます。 アクセス頻度の低いデータのストレージコストを削減しながら、データへのリアルタイムアクセスを維持したい場合は、ライフサイクルルールを設定して、最後のアクセス時刻から指定した日数後にデータをIAストレージクラスに自動的に移動できます。

  • ライフサイエンス

    大量のデータが遺伝子配列決定において生成される。 多くの場合、データが頻繁にアクセスされるかどうかは、データの最終変更時刻ではなく、最終アクセス時刻に基づいて判断される。 ログ分析またはその他の方法に基づいて、コールドデータとホットデータの階層化ストレージを手動で実装できます。 階層ストレージのより効率的な方法は、最終アクセス時間に基づいてライフサイクルルールを設定することです。これにより、OSSはコールドデータとホットデータを自動的に識別し、適切なストレージクラスにデータを保存できます。 同じライフサイクルルールで、最終アクセス時刻と最終変更時刻に基づいてポリシーを指定し、データをより柔軟に管理することもできます。

制限事項

データ削除
マッチ条件
部品ライフサイクル

最終アクセス時刻に基づくライフサイクルルールを使用してデータを削除することはできません。

ライフサイクルルールは、プレフィックスとタグに基づく照合のみをサポートします。 ワイルドカードマッチング、サフィックスマッチング、および正規表現マッチングはサポートされていません。

名前が重複するプレフィックスを持つオブジェクトに対して、部品ライフサイクルポリシーを含む2つ以上のライフサイクルルールを設定することはできません。 例:

  • 例 1

    バケットの部品ポリシーを含むライフサイクルルールを設定する場合、バケット内のオブジェクトの部品ポリシーを含む別のライフサイクルルールを設定することはできません。

  • 例 2

    バケット内のdir1プレフィックスを含むオブジェクトの部品ポリシーを含むライフサイクルルールを設定する場合、dir1/dir2など、名前に重複するプレフィックスを含むオブジェクトの部品ポリシーを含む別のライフサイクルルールを設定することはできません。

使用上の注意

ライフサイクルルールの数

バケットには最大1,000のライフサイクルルールを設定できます。 ライフサイクルルールには、最終変更時刻に基づくポリシーと最終アクセス時刻に基づくポリシーの両方を含めることができます。

料金

  • オブジェクトの監視および管理料金

    バケットのアクセス追跡を有効にすると、オブジェクトのモニタリングと管理の料金が発生します。 ただし、料金は請求されません。

  • 最小保存期間未満で保存されるIAオブジェクトのストレージ料金

    IAオブジェクトの最小保存期間は30日です。 最小保存期間未満で保存された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という名前のライフサイクルルールがバケットに設定されていて、そのバケットに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-HDFSデータの読み取りおよび書き込み操作に影響を与えることがなくなります。

p571593 (1)..jpeg

方法

OSSコンソールの使用

  1. OSSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションツリーで、データ管理 > ライフサイクルを選択します。

  4. ライフサイクルページで、アクセストラッキングの有効化をオンにし、ルールの作成をクリックします。

  5. [ルールの作成] パネルで、パラメーターを設定します。 下表にパラメーターを示します。

    • バージョン化されていないバケットのパラメータ

      セクション

      パラメーター

      説明

      基本設定

      ステータス

      ライフサイクルルールのステータスを指定します。 [有効] または [無効] を選択できます。

      • ライフサイクルルールを有効にすると、OSSは指定されたオブジェクトに対して指定されたアクションを実行します。

      • ライフサイクルルールを無効にすると、ルールに基づくライフサイクル管理タスクが中断されます。

      ポリシー

      ライフサイクルルールを有効にするオブジェクトを指定します。 [指定されたプレフィックスを持つオブジェクト] または バケット全体に適用 を選択できます。

      重複するプレフィックスを許可

      デフォルトでは、各ライフサイクルルールのプレフィックスが重複するかどうかをチェックします。 たとえば、バケットに既存のライフサイクルルール (ルール1) があり、重複するプレフィックスを含む別のライフサイクルルール (ルール2) を設定する場合:

      • ルール1

        オブジェクトが最後に変更されてから30日後に、バケット内のdir1/ プレフィックスを名前に含むすべてのオブジェクトのストレージクラスをIAに変換します。

      • ルール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日に指定されたストレージクラスに移動されます。

      重要

      次のバージョンが生成された時刻に基づいて、オブジェクトが以前のバージョンになるときを判断できます。

  6. OKをクリックします。

    ライフサイクルルールの作成後、ライフサイクルルールリストでルールを表示できます。

OSS SDKの使用

最終アクセス時刻に基づいてライフサイクルルールを作成するには、OSS SDK for JavaとOSS SDK for Goのみを使用できます。 最終アクセス時刻に基づいてライフサイクルルールを作成する前に、バケットのアクセス追跡機能を有効にする必要があります。 最終アクセス時刻に基づいてライフサイクルルールを設定するために使用されるサンプルコードについては、「概要」をご参照ください。

Java
Python
Go
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;

public class Demo {

    public static void main(String[] args) throws Exception {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Create an OSSClient instance. 
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            ossClient.putBucketAccessMonitor(bucketName, AccessMonitor.AccessMonitorStatus.Enabled.toString());
            // Create a lifecycle rule and set the ID to rule1. Specify that the storage classes of objects whose names contain the logs prefix and whose size is less than or equal to 64 KB are changed to IA 30 days after the objects are last accessed. In addition, specify that the objects whose name contain the logs prefix are still stored as IA objects when the objects are accessed again. 
            LifecycleRule lifecycleRule = new LifecycleRule("rule1", "logs", LifecycleRule.RuleStatus.Enabled);
            List<LifecycleRule> lifecycleRuleList = new ArrayList<LifecycleRule>();
            SetBucketLifecycleRequest setBucketLifecycleRequest = new 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);
            
            // Create a lifecycle rule and set the ID to rule2. Specify that the previous versions of the objects whose names contain the dir prefix and whose size is greater than 64 KB are changed to IA 10 days after the objects are last accessed. In addition, specify that the storage classes of the objects whose names contain the dir prefix are changed to Standard when the objects are accessed again. 
            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);

            List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitionList = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
            noncurrentVersionStorageTransitionList.add(noncurrentVersionStorageTransition);
            lifecycleRule2.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitionList);
            lifecycleRuleList.add(lifecycleRule2);

            setBucketLifecycleRequest.setLifecycleRules(lifecycleRuleList);

            // Configure the lifecycle rules. 
            ossClient.setBucketLifecycle(setBucketLifecycleRequest);
        } 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();
            }
        }
    }
}
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import LifecycleRule, BucketLifecycle, StorageTransition, NoncurrentVersionStorageTransition

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Create a lifecycle rule and set ID to rule1. Specify that the storage classes of objects whose names contain the logs prefix and whose size is greater than 64 KB are changed to IA 30 days after the objects are last accessed. In addition, specify that the objects are still stored as IA objects when the objects are accessed again. 
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)]

# Create a lifecycle rule and set ID to rule2. Specify that the storage classes of the previous versions of the objects whose names contain the dir prefix and whose size is greater than 64 KB are changed to IA 10 days after the objects are last accessed. In addition, specify that the storage classes of the objects are changed to Standard when the objects are accessed again. 
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])

# Create the lifecycle rules. 
result = bucket.put_bucket_lifecycle(lifecycle)

print('The lifecycle configuration is successful. ' + str(result.status))
package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Specify the name of the bucket. 
	bucketName := "yourBucketName"

	// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Create an OSSClient instance. 
	// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify the actual endpoint. 
	// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou. Specify the actual region.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Specify the version of the signature algorithm.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	isTrue := true
	isFalse := false
	// Configure a lifecycle rule and set ID to rule1. Specify that the storage classes of objects whose names contain the logs prefix and whose size is less than or equal to 64 KB are converted to IA 30 days after the objects are last accessed. In addition, specify that the objects whose name contain the logs prefix are still stored as IA objects when the objects are accessed again. 
	rule1 := oss.LifecycleRule{
		ID:     "rule1",
		Prefix: "logs",
		Status: "Enabled",
		Transitions: []oss.LifecycleTransition{
			{
				Days:                 30,
				StorageClass:         oss.StorageIA,
				IsAccessTime:         &isTrue,
				ReturnToStdWhenVisit: &isFalse,
				AllowSmallFile:       &isTrue,
			},
		},
	}
	// Configure a lifecycle rule and set ID to rule2. Specify that the previous versions of the objects whose names contain the dir prefix and whose size is greater than 64 KB are converted to IA 10 days after the objects are last accessed. In addition, specify that the storage classes of the objects whose names contain the dir prefix are converted to Standard when the objects are accessed again. 
	rule2 := oss.LifecycleRule{
		ID:     "rule2",
		Prefix: "dir",
		Status: "Enabled",
		NonVersionTransitions: []oss.LifecycleVersionTransition{
			{
				NoncurrentDays:       10,
				StorageClass:         oss.StorageIA,
				IsAccessTime:         &isTrue,
				ReturnToStdWhenVisit: &isTrue,
				AllowSmallFile:       &isFalse,
			},
		},
	}
	// Configure lifecycle rules. 
	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を使用してライフサイクルルールを設定できます。 ossutilのインストール方法の詳細については、「ossutilのインストール」をご参照ください。

次のサンプルコードは、examplebucketのライフサイクルルールを設定する方法を示しています。

ossutil api put-bucket-lifecycle --bucket examplebucket --lifecycle-configuration "{\"Rule\":{\"ID\":\"rule1\",\"Prefix\":\"tmp/\",\"Status\":\"Enabled\",\"Expiration\":{\"Days\":\"10\"},\"Transition\":{\"Days\":\"5\",\"StorageClass\":\"IA\"},\"AbortMultipartUpload\":{\"Days\":\"10\"}}}"

詳細については、「put-bucket-lifecycle」をご参照ください。

関連API操作

次のAPIは、上記の操作を実行するために必要な重要なインフラストラクチャと機能を提供します。 ビジネスで高度なカスタマイズが必要な場合は、OSS 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を持つオブジェクトは別々に格納されます。 バージョン管理されたバケットの最終アクセス時間に基づいてライフサイクルルールを設定した後、オブジェクトの現在のバージョンのストレージクラスが、同じオブジェクトの以前のバージョンのストレージクラスと異なる場合があります。

アクセス追跡を無効にできますか?

はい、アクセス追跡を無効にできます。 バケットのアクセス追跡を無効にする前に、最終アクセス時刻に基づくライフサイクルルールがバケットに設定されていないことを確認してください。 バケットのアクセス追跡を無効にすると、バケット内のオブジェクトの最終アクセス時刻の追跡が停止されます。 次回バケットのアクセス追跡を有効にすると、バケット内のオブジェクトの最終アクセス時刻が更新されます。

関連ドキュメント

LastAccessTime (last access time) は、OSSオブジェクトの重要な属性です。 この属性は、課金やライフサイクルルールなどのシナリオで使用されます。 バケットのアクセス追跡が有効化された後、オブジェクトに対する特定の操作は、オブジェクトの最終アクセス時間を更新することができる。 詳細については、「オブジェクトの最終アクセス時間を更新する操作は何ですか? 」をご参照ください。

  • 目次 (1, M)
  • シナリオ
  • 制限事項
  • 使用上の注意
  • 方法
  • OSSコンソールの使用
  • OSS SDKの使用
  • ossutilの使用
  • 関連API操作
  • よくある質問
  • 関連ドキュメント
フィードバック
phone お問い合わせ

Chat now with Alibaba Cloud Customer Service to assist you in finding the right products and services to meet your needs.

alicare alicarealicarealicare