すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:最終変更時刻に基づくライフサイクルルールの構成によるストレージコストの削減

最終更新日:Jul 09, 2025

ビジネス要件に基づいて、コンプライアンスまたはアーカイブ要件のために、Object Storage Service(OSS)バケットにあるアクセス頻度の低いデータを長期間保持したり、不要になったデータをバッチで削除したりする必要がある場合があります。 最終変更時刻に基づいてライフサイクルルールを構成し、コールドデータを適切なストレージクラスに移動したり、オブジェクトを削除したりして、ストレージコストを削減できます。

シナリオ

  • 医療機関は、OSS に医療記録を保存します。 これらのオブジェクトは、アップロード後 6 か月以内はアクセスされる場合がありますが、その後はほとんどアクセスされません。 この場合、データマネージャーは、オブジェクトがアップロードされてから 180 日後にオブジェクトのストレージクラスをアーカイブに変換するライフサイクルルールを構成できます。

  • ある企業は、カスタマーサービスホットラインの通話記録を OSS に保存します。 これらのオブジェクトは、最初の 2 か月間は頻繁にアクセスされ、2 か月後には時折アクセスされ、6 か月後にはほとんどアクセスされません。 2 年後、オブジェクトを保存する必要がなくなります。 この場合、データマネージャーは、これらのオブジェクトのストレージクラスを、アップロードされてから 60 日後に低頻度アクセス(IA)に、180 日後にアーカイブに変換し、730 日後に削除するライフサイクルルールを構成できます。

  • バケット内のすべてのオブジェクトを翌日削除するライフサイクルルールを構成できます。

ストレージクラスの詳細については、「ストレージクラス」をご参照ください。

制限

一致条件

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

パートライフサイクル

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

  • 例 1

    バケットにパートポリシーを含むライフサイクルルールを構成した場合、バケット内のオブジェクトにパートポリシーを含む別のライフサイクルルールを構成することはできません。

  • 例 2

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

ストレージクラスの変換

  • 追加可能なオブジェクトのストレージクラスをコールドアーカイブまたはディープコールドアーカイブに変換するライフサイクルルールを構成することはできません。

  • シンボリックリンクのストレージクラスを IA、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブに変換するライフサイクルルールを構成することはできません。

使用上の注意

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

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

上書きのセマンティクス

PutBucketLifecycle 操作は、バケットのライフサイクルルールの既存の構成を上書きします。 たとえば、Rule1 という名前のライフサイクルルールがバケットに構成されていて、Rule2 という名前の別のライフサイクルルールをバケットに構成する場合、次の操作を実行します。

  • Rule1 をクエリします。

  • Rule1 と Rule2 の両方を追加します。

  • 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-HDFS が有効になっているバケットのライフサイクルルール

  • OSS オブジェクトのライフサイクルルール

    OSS-HDFS が有効になっているバケット内のすべてのオブジェクトと一致するように、最終変更時刻に基づくライフサイクルルールを構成または変更するには、NOT 要素を使用して .dlsdata/ ディレクトリに保存されているオブジェクトを除外します。 これにより、ライフサイクルルールによってトリガーされるオブジェクトの削除またはストレージクラスの変換操作が OSS-HDFS データに適用されなくなり、その結果、OSS-HDFS データの読み取りおよび書き込み操作に影響を与えることがなくなります。

    p571593..jpeg

  • Hadoop 分散ファイルシステム(HDFS)ファイルのライフサイクルルール

    たとえば、頻繁にアクセスされるオブジェクトを標準ストレージクラスに保存し、アクセス頻度の低いオブジェクトを IA、アーカイブ、またはコールドアーカイブストレージクラスに保存するとします。 この場合、自動ストレージ階層化機能を使用するライフサイクルルールを構成できます。 詳細については、「OSS-HDFS の自動ストレージ階層化」をご参照ください。

ライフサイクルルールの要素

一致条件

  • プレフィックスによる一致:オブジェクトとパートはプレフィックスによって一致します。 複数のライフサイクルルールを作成して、異なるプレフィックスを指定できます。 各プレフィックスは一意である必要があります。 プレフィックスの命名規則は、オブジェクトの命名規則と同じです。 詳細については、「オブジェクト」をご参照ください。

  • タグによる一致:オブジェクトはタグキーとタグ値によって一致します。 1 つのライフサイクルルールで複数のタグを指定できます。 ライフサイクルルールは、指定されたすべてのタグを持つオブジェクトにのみ適用されます。

    ライフサイクルルールに指定されたタグフィルター

    オブジェクトのタグ

    ライフサイクルルールがオブジェクトに適用されるかどうか

    a:1, b:2

    a:1

    いいえ

    a:1,b:3

    いいえ

    a:1, b:2

    はい

    a:1, b:2, c:3

    はい

    説明

    OSS ライフサイクルルールは、タグによるパートの一致はできません。

  • プレフィックスとタグによる一致:オブジェクトはプレフィックスとタグによって一致します。

  • バケットによる一致:バケットに保存されているすべてのオブジェクトとパートが対象となります。

  • NOT 要素:NOT 要素は、特定のライフサイクルルールを有効にしたくないオブジェクトの名前プレフィックスとタグを指定します。 NOT 要素の構成方法の詳細については、「NOT」をご参照ください。

    重要

    1 つのライフサイクルルールに構成できる NOT 要素は 1 つだけです。 NOT 要素には 1 つのプレフィックスのみを指定する必要があります。 また、ライフサイクルルールでは、NOT 要素に最大 1 つのタグを構成できます。

オブジェクトの有効期間または有効期限と、期限切れオブジェクトに対するアクション

  • 有効期間:バージョン管理されていないバケット内のオブジェクトと、バージョン管理されているバケット内のオブジェクトの現在のバージョンの有効期間を指定します。 オブジェクトの期限が切れた後に OSS に実行させるアクションを指定します。 特定のライフサイクルルールに一致するオブジェクトは、オブジェクトが最後に変更されてから指定された有効期間保持されます。 指定されたアクションは、これらのオブジェクトの期限が切れた後に実行されます。

  • 有効期限:バージョン管理されていないバケット内のオブジェクトと、バージョン管理されているバケット内のオブジェクトの現在のバージョンの有効期限を指定します。 これらのオブジェクトの期限が切れた後に OSS に実行させるアクションを指定します。 この日付より前に最後に変更されたすべてのオブジェクトの期限が切れ、指定されたアクションは、これらのオブジェクトの期限が切れた後に実行されます。

  • オブジェクトの以前のバージョンの有効期間:オブジェクトの以前のバージョンの有効期間と、期限切れになった後に OSS に以前のバージョンで実行させるアクションを指定します。 特定のライフサイクルルールに一致するオブジェクトは、オブジェクトが以前のバージョンになってから指定された有効期間保持されます。 指定されたアクションは、これらのオブジェクトの期限が切れた後に実行されます。

期限切れオブジェクトのストレージクラスを変換したり、期限切れオブジェクトを削除したりするライフサイクルルールを構成できます。 詳細については、「構成要素」をご参照ください。

パートの有効期間または有効期限と、期限切れパートに対するアクション

  • 有効期間:パートの有効期間を指定します。 特定のライフサイクルルールに一致するパートは、指定された有効期間内に保持され、パートの期限が切れた後に削除されます。

  • 有効期限:パートの有効期限を指定します。 有効期限より前に最後に変更されたパートは削除されます。

マッチングロジック

異なるプレフィックス

たとえば、次のオブジェクトがバケットに保存されているとします。

logs/programl/log1.txt
logs/program2/log2.txt
logs/program3/log3.txt
doc/readme.txt

ライフサイクルルールに指定されたプレフィックスが logs/ の場合、ライフサイクルルールは、名前に logs/ プレフィックスが含まれる最初の 3 つのオブジェクトに有効です。 ライフサイクルルールに指定されたプレフィックスが doc/readme.txt の場合、ライフサイクルルールは doc/readme.txt にのみ有効です。

説明

プレフィックスは漢字で始めることができます。

GetObject または HeadObject 操作がライフサイクルルールに一致するオブジェクトで実行されると、x-oss-expiration ヘッダーがレスポンスに含まれます。 ヘッダーには、オブジェクトの有効期限を示す expiry-date パラメーターと、一致したライフサイクルルールの ID を示す rule-id パラメーターの 2 つのパラメーターが含まれています。

複数のライフサイクルルールで指定された同じプレフィックスとタグ

同じ名前のプレフィックスとタグを持つオブジェクトが複数のライフサイクルルールに同時に一致する場合、オブジェクトを削除するように構成されたライフサイクルルールは、オブジェクトのストレージクラスを変換するように構成されたライフサイクルルールよりも優先されます。 たとえば、次の表に示す rule1 と rule2 はどちらも、名前に abc プレフィックスが含まれ、a=1 タグが付いているオブジェクトに有効です。 rule1 は、一致したオブジェクトを最終変更時刻から 20 日後に削除するように構成されています。 rule2 は、一致したオブジェクトのストレージクラスを最終変更時刻から 20 日後にアーカイブに変換するように構成されています。 rule1 と rule2 がバケットに同時に構成されている場合、rule2 は有効になりません。

ルール

プレフィックス

タグ

アクション

rule1

abc

a=1

一致したオブジェクトを最終変更時刻から 20 日後に削除します。

rule2

abc

a=1

一致したオブジェクトのストレージクラスを最終変更時刻から 20 日後にアーカイブに変換します。

複数のライフサイクルルールで指定された重複するプレフィックスと同じタグ

たとえば、次の表に示す rule1 は、a=1 タグが付いているオブジェクトのストレージクラスを最終変更時刻から 10 日後に IA に変換します。 次の表に示す rule2 は、名前に abc プレフィックスが含まれ、a=1 タグが付いているオブジェクトを最終変更時刻から 120 日後に削除します。

ルール

プレフィックス

タグ

アクション

rule1

-

a=1

一致したオブジェクトのストレージクラスを最終変更時刻から 10 日後に IA に変換します。

rule2

abc

a=1

一致したオブジェクトを最終変更時刻から 120 日後に削除します。

次の表に示す rule3 は、a=1 タグが付いているオブジェクトのストレージクラスを最終変更時刻から 20 日後にアーカイブに変換します。 次の表に示す rule4 は、名前に abc プレフィックスが含まれ、a=1 タグが付いているオブジェクトのストレージクラスを最終変更時刻から 30 日後に IA に変換します。 rule3 と rule4 がバケットに同時に構成されている場合、名前に abc プレフィックスが含まれ、a=1 タグが付いているオブジェクトのストレージクラスは、rule3 に基づいて最終変更時刻から 20 日後にアーカイブに変換されます。 アーカイブオブジェクトを IA オブジェクトに変換することはできません。 したがって、rule4 は有効になりません。

ルール

プレフィックス

タグ

アクション

rule3

-

a=1

一致したオブジェクトのストレージクラスを最終変更時刻から 20 日後にアーカイブに変換します。

rule4

abc

a=1

一致したオブジェクトのストレージクラスを最終変更時刻から 30 日後に IA に変換します。

NOT

バケットに複数のライフサイクルルールを構成し、そのうちの 1 つのライフサイクルルールに NOT 要素が含まれている場合、NOT 要素を含むルールで指定されたアクションは、そのルールに一致するオブジェクトにのみ実行されます。 例:

  • 例 1

    • ライフサイクルルールは、examplebucket バケット内の名前に dir/ プレフィックスが含まれるオブジェクトを最終変更時刻から 100 日後に削除するように構成されています。

    • NOT 要素を含む別のライフサイクルルールは、examplebucket バケット内の名前に dir/ プレフィックスが含まれていないすべてのオブジェクトを最終変更時刻から 50 日後に削除するように構成されています。

    次の表は、上記のライフサイクルルールが適用された後のオブジェクトに対するアクションを示しています。

    オブジェクト

    アクション

    名前に dir/ プレフィックスが含まれるオブジェクト

    一致したオブジェクトを最終変更時刻から 100 日後に削除します。

    名前に dir/ プレフィックスが含まれていないオブジェクト

    一致したオブジェクトを最終変更時刻から 50 日後に削除します。

  • 例 2

    • NOT 要素を含むライフサイクルルールは、examplebucket バケット内の TagA(key1:value1)を持たないすべてのオブジェクトを最終変更時刻から 30 日後に削除するように構成されています。

    • 別のライフサイクルルールは、examplebucket バケット内の TagB(key2:value2)を持つオブジェクトを最終変更時刻から 50 日後に削除するように構成されています。

    次の表は、上記のライフサイクルルールが適用された後のオブジェクトに対するアクションを示しています。

    オブジェクト

    アクション

    TagA または TagB を持たないすべてのオブジェクト

    一致したオブジェクトを最終変更時刻から 30 日後に削除します。

    TagA のみを持つオブジェクト

    一致したオブジェクトを削除しません。

    TagB のみを持つオブジェクト

    一致したオブジェクトを最終変更時刻から 30 日後に削除します。

    TagA と TagB を持つオブジェクト

    一致したオブジェクトを最終変更時刻から 50 日後に削除します。

方法

OSS コンソールを使用する

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

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

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

  4. ライフサイクル ページで、ルールの作成 をクリックします。

    説明

    最終変更時刻に基づいてライフサイクルルールを作成する場合、ライフサイクル ページで [アクセストラッキングを有効にする] をオンにする必要はありません。 アクセストラッキングには追加料金が発生します。 最終アクセス時刻に基づいてライフサイクルルールを作成するには、アクセストラッキングを有効にする必要があります。 詳細については、「最終アクセス時刻に基づくライフサイクルルール」をご参照ください。

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

    • バージョン管理されていないバケット

      セクション

      パラメーター

      説明

      基本設定

      ステータス

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

      • ライフサイクルルールが有効になると、オブジェクトのストレージクラスが変換されるか、ライフサイクルルールに基づいてオブジェクトが削除されます。

      • ライフサイクルルールを無効にすると、ライフサイクルルールのライフサイクルフローが中断されます。

      ポリシー

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

      説明

      [指定したプレフィックスを持つオブジェクト] を選択した場合は、完全なプレフィックスを指定する必要があります。 たとえば、ライフサイクルルールを src/dir1 プレフィックスを含む名前のオブジェクトに適用する場合、src/dir1 と入力します。 dir1 のみを入力すると、ライフサイクルルールは意図した効果を生み出しません。

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

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

      • ルール 1

        バケット内の dir1/ プレフィックスを含む名前のすべてのオブジェクトを、最終変更時刻から 180 日後に削除します。

      • ルール 2

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

      このチェックボックスをオンにしないと、OSS は dir1/dir2/ ディレクトリ内のオブジェクトが 2 つのライフサイクルルールに一致することを検出し、ルール 2 の作成を拒否し、同じアクショ ンタイプの有効期限が重複しています。 というエラーメッセージを返します。

      このチェックボックスをオンにすると、ルール 2 が作成され、dir1/dir2/ ディレクトリ内のオブジェクトのストレージクラスが、最終変更時刻から 30 日後に IA に変換され、最終変更時刻から 60 日後に削除されます。 dir1/ ディレクトリ内の他のオブジェクトは、最終変更時刻から 180 日後に削除されます。

      説明

      バケットに複数のライフサイクルルールがあり、そのうちの 1 つがバケット全体に適用される場合、ライフサイクルルールのプレフィックスは重複します。

      接頭辞

      ライフサイクルルールを有効にするオブジェクトの名前のプレフィックスを指定します。

      • プレフィックスを img に設定すると、imgtest.png や img/example.jpg など、名前に img プレフィックスが含まれるすべてのオブジェクトがライフサイクルルールに一致します。

      • プレフィックスを img/ に設定すると、img/example.jpg や img/test.jpg など、名前に img/ プレフィックスが含まれるすべてのオブジェクトがライフサイクルルールに一致します。

      タグ

      タグを指定します。 ルールは、指定されたタグを持つオブジェクトにのみ有効です。

      • たとえば、ライフサイクルルールでタグを指定し、ライフサイクルルールでプレフィックスを指定しない場合、ライフサイクルルールはバケット内のタグを持つすべてのオブジェクトに適用されます。

      • ライフサイクルルールで a=1 タグと img プレフィックスを指定すると、ライフサイクルルールは、オブジェクト名に img プレフィックスが含まれ、バケットに a=1 タグが付いているすべてのオブジェクトに適用されます。

      詳細については、「オブジェクトにタグを付ける」をご参照ください。

      NOT

      ライフサイクルルールを、指定された名前のプレフィックスとタグを持つオブジェクトに有効にしないことを指定します。

      重要
      • NOT をオンにする場合、ライフサイクルルールには [プレフィックス] パラメーターと [タグ] パラメーターの少なくとも 1 つを指定する必要があります。

      • NOT パラメーターに指定されたタグのキーは、タグ パラメーターに指定されたキーと同じにすることはできません。

      • NOT をオンにした場合、ライフサイクルルールにパートポリシーを含めることはできません。

      ファイルサイズ

      ライフサイクルルールが有効になるオブジェクトのサイズを指定します。

      • 最小サイズ:ライフサイクルルールを、サイズが指定されたサイズより大きいオブジェクトにのみ有効にすることを指定します。 0 B より大きく 5 TB より小さい最小オブジェクトサイズを指定できます。

      • 最大サイズ:ライフサイクルルールを、サイズが指定されたサイズより小さいオブジェクトにのみ有効にすることを指定します。 0 B より大きく 5 TB 以下の最大オブジェクトサイズを指定できます。

      重要

      同じライフサイクルルールで最小オブジェクトサイズと最大オブジェクトサイズを指定する場合は、次の点に注意してください。

      • 最大オブジェクトサイズは最小オブジェクトサイズより大きくなければなりません。

      • ライフサイクルルールにパートポリシーを含めることはできません。

      • 削除マーカーを削除するポリシーを含めることはできません。

      オブジェクトに対するポリシー

      オブジェクトのライフサイクル

      オブジェクトの有効期限ポリシーを指定します。 [有効期間(日数)][有効期限]、または 有効になっていません を選択できます。 有効になっていません を選択すると、オブジェクトの有効期限ポリシーは構成されません。

      ライフサイクルベースのルール

      オブジェクトのストレージクラスを変換したり、期限切れのオブジェクトを削除したりするライフサイクルルールを構成します。 [IA][アーカイブ][コールドアーカイブ][ディープコールドアーカイブ]、または [オブジェクトの削除] を選択できます。

      たとえば、オブジェクトのライフサイクル[有効期限] を選択し、有効期限として 2023 年 9 月 24 日を指定し、[オブジェクトの削除(復元不可)] を指定します。 この場合、2023 年 9 月 24 日より前に最後に変更されたオブジェクトは自動的に削除され、復元できません。

      フラグメントに対するポリシー

      フラグメント期限切れポリシー

      パートポリシーを指定します。 タグ パラメーターを構成すると、このパラメーターは使用できなくなります。 [有効期間(日数)][有効期限]、または 有効になっていません を選択できます。 有効になっていません を選択すると、パートポリシーは構成されません。

      重要

      ライフサイクルルールには、オブジェクトの有効期限ポリシーとパートの有効期限ポリシーの少なくとも 1 つが含まれている必要があります。

      フラグメントに対するルール

      パートの期限が切れるタイミングを指定します。 有効期間または有効期限を指定できます。 期限切れのパートは自動的に削除され、復元できません。

    • バージョン管理されているバケット

      基本設定 セクションと フラグメントに対するポリシー セクションのパラメーターは、バージョン管理されていないバケットのパラメーターと同じ方法で構成します。 次の表では、バージョン管理されていないバケットに構成できるパラメーターと異なるパラメーターのみについて説明します。

      セクション

      パラメーター

      説明

      現在のバージョンのポリシー

      [削除マーカーの削除]

      バケットがバージョン管理されている場合、[オブジェクトライフサイクル] パラメーターに [削除マーカーの削除] オプションが追加されます。 その他のパラメーターは、バージョン管理されていないバケットに構成できるパラメーターと同じです。

      [削除マーカーの削除] を選択し、オブジェクトにバージョンが 1 つだけで、それが削除マーカーである場合、OSS は削除マーカーの期限が切れていると見なし、削除マーカーを削除します。 オブジェクトに複数のバージョンがあり、オブジェクトの現在のバージョンが削除マーカーである場合、OSS は削除マーカーを保持します。 削除マーカーの詳細については、「削除マーカー」をご参照ください。

      重要

      一致したオブジェクトに以前のバージョンがある場合、ライフサイクルルールはオブジェクトの削除マーカーを削除しません。 不要になった以前のオブジェクトバージョンと削除マーカーを削除して、多数の削除マーカーによるリストパフォーマンスの低下を防ぐことをお勧めします。

      以前のバージョンに対するポリシー

      オブジェクトのライフサイクル

      以前のバージョンの期限が切れるタイミングを指定します。 [有効期間(日数)] または 有効になっていません を選択できます。 有効になっていません を選択すると、オブジェクトポリシーは構成されません。

      ライフサイクルベースのルール

      オブジェクトが以前のバージョンになってから保持できる日数を指定します。 期限が切れると、翌日、以前のバージョンに対して指定されたアクションが実行されます。 たとえば、[有効期間(日数)] パラメーターを 30 に設定すると、2023 年 9 月 1 日に以前のバージョンになったオブジェクトは、2023 年 10 月 1 日に指定されたストレージクラスに移動されるか、削除されます。

      重要

      オブジェクトが以前のバージョンになったタイミングは、後のバージョンが生成された時刻に基づいて判断できます。

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

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

OSS SDK を使用する

次のサンプルコードは、一般的なプログラミング言語の OSS SDK を使用してライフサイクルルールを構成する方法の例を示しています。 他のプログラミング言語の OSS SDK を使用してライフサイクルルールを構成するためのサンプルコードの詳細については、「概要」をご参照ください。

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.common.utils.DateUtil;
import com.aliyun.oss.model.LifecycleRule;
import com.aliyun.oss.model.SetBucketLifecycleRequest;
import com.aliyun.oss.model.StorageClass;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {

    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";
        // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient が不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // SetBucketLifecycleRequest を使用してリクエストを作成します。
            SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);

            // ライフサイクルルールの ID を指定します。
            String ruleId0 = "rule0";
            // ライフサイクルルールを一致させるプレフィックスを指定します。
            String matchPrefix0 = "A0/";
            // ライフサイクルルールを一致させるタグを指定します。
            Map<String, String> matchTags0 = new HashMap<String, String>();
            // タグのキーと値を指定します。 この例では、キーは owner に設定され、値は John に設定されています。
            matchTags0.put("owner", "John");


            String ruleId1 = "rule1";
            String matchPrefix1 = "A1/";
            Map<String, String> matchTags1 = new HashMap<String, String>();
            matchTags1.put("type", "document");

            String ruleId2 = "rule2";
            String matchPrefix2 = "A2/";

            String ruleId3 = "rule3";
            String matchPrefix3 = "A3/";

            String ruleId4 = "rule4";
            String matchPrefix4 = "A4/";

            String ruleId5 = "rule5";
            String matchPrefix5 = "A5/";

            String ruleId6 = "rule6";
            String matchPrefix6 = "A6/";

            // 最終変更時刻から 3 日後に有効期限を設定します。
            LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
            rule.setTags(matchTags0);
            request.AddLifecycleRule(rule);

            // 指定した日付より前に作成されたオブジェクトの期限が切れるように指定します。
            rule = new LifecycleRule(ruleId1, matchPrefix1, LifecycleRule.RuleStatus.Enabled);
            rule.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            rule.setTags(matchTags1);
            request.AddLifecycleRule(rule);

            // 最終変更時刻から 3 日後にパートの期限が切れるように指定します。
            rule = new LifecycleRule(ruleId2, matchPrefix2, LifecycleRule.RuleStatus.Enabled);
            LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setExpirationDays(3);
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

            // 特定の日付より前に作成されたパートの期限が切れるように指定します。
            rule = new LifecycleRule(ruleId3, matchPrefix3, LifecycleRule.RuleStatus.Enabled);
            abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

            // オブジェクトのストレージクラスが、最終変更時刻から 10 日後に IA に変更され、最終変更時刻から 30 日後にアーカイブに変更されるように指定します。
            rule = new LifecycleRule(ruleId4, matchPrefix4, LifecycleRule.RuleStatus.Enabled);
            List<LifecycleRule.StorageTransition> storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.IA);
            storageTransition.setExpirationDays(10);
            storageTransitions.add(storageTransition);
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(30);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            request.AddLifecycleRule(rule);

            // 2022 年 10 月 12 日より前に最後に変更されたオブジェクトのストレージクラスがアーカイブに変更されるように指定します。
            rule = new LifecycleRule(ruleId5, matchPrefix5, LifecycleRule.RuleStatus.Enabled);
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();

            storageTransition.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));

            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            request.AddLifecycleRule(rule);

            // rule6 がバージョン管理対応バケット用に構成されていることを指定します。
            rule = new LifecycleRule(ruleId6, matchPrefix6, LifecycleRule.RuleStatus.Enabled);
            // オブジェクトのストレージクラスが、最終変更時刻から 365 日後にアーカイブに変更されるように指定します。
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(365);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            // 期限切れの削除マーカーを自動的に削除するようにライフサイクルルールを構成します。
            rule.setExpiredDeleteMarker(true);
            // オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(10).withStrorageClass(StorageClass.IA);
            // オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 20 日後にアーカイブに変更されるように指定します。
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition2 =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(20).withStrorageClass(StorageClass.Archive);
            // オブジェクトの以前のバージョンが、最終変更時刻から 30 日後に削除されるように指定します。
            LifecycleRule.NoncurrentVersionExpiration noncurrentVersionExpiration = new LifecycleRule.NoncurrentVersionExpiration().withNoncurrentDays(30);
            List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitions = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
            noncurrentVersionStorageTransitions.add(noncurrentVersionStorageTransition2);
            rule.setStorageTransition(storageTransitions);
            rule.setNoncurrentVersionExpiration(noncurrentVersionExpiration);
            rule.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitions);
            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());
            }
        } 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();
            }
        }
    }
}

PHP

<?php

// 依存関係を読み込むために autoload ファイルを含めます
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;

// コマンドラインパラメーターの説明を指定します
$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);

// 名前に log/ プレフィックスが含まれるオブジェクトを 30 日後に IA ストレージクラスに変換するライフサイクルルールを定義します
$lifecycleRule = new Oss\Models\LifecycleRule(
    prefix: 'log/', // オブジェクトのプレフィックス
    transitions: array(
        new Oss\Models\LifecycleRuleTransition(
            days: 30, // 変換時間は 30 日です
            storageClass: 'IA' // ターゲットストレージクラスは IA です
        )
    ),
    id: 'rule', // ルールの ID
    status: 'Enabled' // ルールのステータスは有効です
);

// ライフサイクル構成オブジェクトを作成し、ライフサイクルルールを追加します
$lifecycleConfiguration = new LifecycleConfiguration(
    rules: array($lifecycleRule)
);

// バケットのライフサイクルを設定するためのリクエストオブジェクトを作成し、ライフサイクル構成を渡します
$request = new Oss\Models\PutBucketLifecycleRequest(
    bucket: $bucket,
    lifecycleConfiguration: $lifecycleConfiguration
);

// putBucketLifecycle メソッドを呼び出して、バケットのライフサイクルルールを設定します
$result = $client->putBucketLifecycle($request);

// 返された結果を表示します
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP レスポンスステータスコード
    'request id:' . $result->requestId . PHP_EOL // リクエストの一意の識別子
);

Node.js

const OSS = require('ali-oss')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
  region: 'yourregion',
  // 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // バケットの名前を指定します。
  bucket: 'yourbucketname'
});

async function putBucketLifecycle(lifecycle) {
  try {
    const result = await client.putBucketLifecycle('yourbucketname', [
    lifecycle
  ]);
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

const lifecycle1 = {
  id: 'rule1',
  status: 'Enabled',
  prefix: 'foo/',
  expiration: {
    // オブジェクトの最終変更時刻から 3 日後にオブジェクトの現在のバージョンが期限切れになるように指定します。
    days: 3 
  }
}
putBucketLifecycle(lifecycle1)

const lifecycle2 = {
  id: 'rule2',
  status: 'Enabled',
  prefix: 'foo/', 
  expiration: {
    // 指定した日付より前に作成されたオブジェクトの期限が切れるように指定します。
    createdBeforeDate: '2020-02-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle2)

const lifecycle3 = {
  id: 'rule3',
  status: 'Enabled',
  prefix: 'foo/', 
  abortMultipartUpload: {
    // 3 日でパートの期限が切れるように指定します。
    days: 3 
  },
}
putBucketLifecycle(lifecycle3)

const lifecycle4 = {
  id: 'rule4',
  status: 'Enabled',
  prefix: 'foo/', 
  abortMultipartUpload: {
    // 指定した日付より前に作成されたパートの期限が切れるように指定します。
    createdBeforeDate: '2020-02-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle4)

const lifecycle5 = {
  id: 'rule5',
  status: 'Enabled',
  prefix: 'foo/', 
  transition: {
    // オブジェクトの現在のバージョンのストレージクラスが、最終変更時刻から 20 日後にアーカイブに変更されるように指定します。
    days: 20,
    storageClass: 'Archive'
  },
  expiration: {
    // オブジェクトの最終変更時刻から 21 日後にオブジェクトの現在のバージョンが期限切れになるように指定します。
    days: 21 
  },
}
putBucketLifecycle(lifecycle5)

const lifecycle6 = {
  id: 'rule6',
  status: 'Enabled',
  prefix: 'foo/', 
  transition: {
    //指定した日付より前に作成されたオブジェクトのストレージクラスがアーカイブに変更されるように指定します。
    createdBeforeDate: '2023-02-19T00:00:00.000Z', 
    storageClass: 'Archive'
  },
  expiration: {
    // 指定した日付より前に作成されたオブジェクトが削除されるように指定します。
    createdBeforeDate: '2023-01-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle6)

const lifecycle7 = {
  id: 'rule7',
  status: 'Enabled',
  prefix: 'foo/', 
  expiration: {
    // 削除マーカーが期限切れになると自動的に削除されるように指定します。
    expiredObjectDeleteMarker: true 
  }
}
putBucketLifecycle(lifecycle7)

const lifecycle8 = {
  id: 'rule8',
  status: 'Enabled',
  prefix: 'foo/', 
  // オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。
  noncurrentVersionTransition: {
    noncurrentDays: '10',
    storageClass: 'IA'
  }
}
putBucketLifecycle(lifecycle8)

const lifecycle9 = {
  id: 'rule9',
  status: 'Enabled',
  prefix: 'foo/', 
  // オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。
  noncurrentVersionTransition: {
    noncurrentDays: '10',
    storageClass: 'IA'
  },
  // ルールを一致させたいオブジェクトのタグを指定します。
  tag: [{
    key: 'key1',
    value: 'value1'
  },
   {
     key: 'key2',
     value: 'value2'
   }]
}
putBucketLifecycle(lifecycle9)

Python

import argparse
import datetime
import alibabacloud_oss_v2 as oss

# ユーザー入力パラメーターを受け取るコマンドライン引数パーサーを作成します
parser = argparse.ArgumentParser(description="put bucket lifecycle sample")

# コマンドラインパラメーター --region を追加します。これは、バケットが配置されているリージョンを示し、必須です
parser.add_argument('--region', help='バケットが配置されているリージョン。', required=True)

# コマンドラインパラメーター --bucket を追加します。これは、バケットの名前を示し、必須です
parser.add_argument('--bucket', help='バケットの名前。', required=True)

# コマンドラインパラメーター --endpoint を追加します。これは、他のサービスが OSS にアクセスするために使用するドメイン名を示し、オプションです
parser.add_argument('--endpoint', help='他のサービスが OSS にアクセスするために使用できるドメイン名')

def main():
    # コマンドラインパラメーターを解析します
    args = parser.parse_args()

    # 環境変数から認証情報(AccessKeyId と AccessKeySecret)を読み込みます
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を読み込みます
    cfg = oss.config.load_default()

    # 認証情報プロバイダーを設定します
    cfg.credentials_provider = credentials_provider

    # バケットが配置されているリージョンを設定します
    cfg.region = args.region

    # ユーザーがカスタムエンドポイントを提供する場合は、構成に設定します
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 構成オブジェクトを使用して OSS クライアントを初期化します
    client = oss.Client(cfg)

    result = client.put_bucket_lifecycle(oss.PutBucketLifecycleRequest(
            bucket=args.bucket,
            lifecycle_configuration=oss.LifecycleConfiguration(
                rules=[oss.LifecycleRule(
                    #  ライフサイクルルール rule1 を指定します。ルールは、プレフィックス foo、タグキー k1、タグ値 v1 を持つファイルが、最終変更時刻から 30 日後に IA ストレージクラスに変換されることを指定します
                    id='rule1',
                    status='Enabled',
                    prefix='foo/',
                    transitions=[oss.LifecycleRuleTransition(
                        days=30,
                        storage_class=oss.StorageClassType.IA,
                        is_access_time=False, # false に設定、最終変更時刻ポリシーに基づきます
                    )],
                    tags=[oss.Tag(
                        key='k1',
                        value='v1',
                    )],
                ), oss.LifecycleRule(
                    # ライフサイクルルール rule2 を指定します。ルールは、プレフィックス dir を持つオブジェクトが、バージョン管理下のオブジェクトに削除マーカーのみがある場合に削除マーカーを自動的に削除し、非現行バージョンのオブジェクトが 30 日後に期限切れになり削除され、非現行バージョンのオブジェクトが 10 日後に IA ストレージクラスに変換されることを指定します
                    id='rule2',
                    status='Enabled',
                    prefix='dir/',
                    expiration=oss.LifecycleRuleExpiration(
                        days=10,
                        expired_object_delete_marker=True
                    ),
                    noncurrent_version_expiration=oss.NoncurrentVersionExpiration(
                        noncurrent_days=30,
                    ),
                    noncurrent_version_transition=oss.NoncurrentVersionTransition(
                        noncurrent_days=10,
                        storage_class=oss.StorageClassType.IA,
                        is_access_time=False, # false に設定、最終変更時刻ポリシーに基づきます
                    ),
                )]
            ),
    ))

    # 操作結果のステータスコードとリクエスト ID を出力します
    print(f'status code: {result.status_code}, '  # HTTP ステータスコード。リクエストが成功したかどうかを示します
          f'request id: {result.request_id}')    # リクエスト ID。リクエストログの追跡とデバッグに使用されます


if __name__ == "__main__":
    # プログラムエントリ。main 関数を呼び出してロジックを実行します
    main()

C#

using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケット名を指定します。 例:examplebucket。
var bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

// ClientConfiguration インスタンスを作成し、要件に基づいてデフォルトパラメーターを変更します。
var conf = new ClientConfiguration();

// 署名アルゴリズム V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;

// OSSClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
    // 最初のライフサイクルルールを作成します。
    LifecycleRule lcr1 = new LifecycleRule()
    {
        ID = "delete obsoleted files",
        Prefix = "obsoleted/",
        Status = RuleStatus.Enabled,
        ExpriationDays = 3,
        Tags = new Tag[1]
    };
    // ルールのタグを指定します。
    var tag1 = new Tag
    {
        Key = "project",
        Value = "projectone"
    };

    lcr1.Tags[0] = tag1;

    // 2 番目のライフサイクルルールを作成します。
    LifecycleRule lcr2 = new LifecycleRule()
    {
        ID = "delete temporary files",
        Prefix = "temporary/",
        Status = RuleStatus.Enabled,
        ExpriationDays = 20,
        Tags = new Tag[1]         
    };
    // ルールのタグを指定します。
    var tag2 = new Tag
    {
        Key = "user",
        Value = "jsmith"
    };
    lcr2.Tags[0] = tag2;

    // 最終変更時刻から 30 日後にパートの期限が切れるように指定します。
    lcr2.AbortMultipartUpload = new LifecycleRule.LifeCycleExpiration()
    {
        Days = 30
    };

    LifecycleRule lcr3 = new LifecycleRule();
    lcr3.ID = "only NoncurrentVersionTransition";
    lcr3.Prefix = "test1";
    lcr3.Status = RuleStatus.Enabled;
    lcr3.NoncurrentVersionTransitions = new LifecycleRule.LifeCycleNoncurrentVersionTransition[2]
    {
        // オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 90 日後に IA に変換されるように指定します。
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.IA,
            NoncurrentDays = 90
        },
        // オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 180 日後にアーカイブに変換されるように指定します。
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.Archive,
            NoncurrentDays = 180
        }
    };
    setBucketLifecycleRequest.AddLifecycleRule(lcr1);
    setBucketLifecycleRequest.AddLifecycleRule(lcr2);
    setBucketLifecycleRequest.AddLifecycleRule(lcr3);

    // ライフサイクルルールを構成します。
    client.SetBucketLifecycle(setBucketLifecycleRequest);
    Console.WriteLine("Set bucket:{0} Lifecycle succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Android-Java

PutBucketLifecycleRequest request = new PutBucketLifecycleRequest();
request.setBucketName("examplebucket");

BucketLifecycleRule rule1 = new BucketLifecycleRule();
// ルール ID と、ルールに一致するオブジェクトの名前に含まれるプレフィックスを指定します。
rule1.setIdentifier("1");
rule1.setPrefix("A");
// ライフサイクルルールを実行するかどうかを指定します。 このパラメーターを true に設定すると、OSS はこのルールを定期的に実行します。 このパラメーターを false に設定すると、OSS はこのルールを無視します。
rule1.setStatus(true);
// 最終変更時刻から 200 日後にオブジェクトの期限が切れるように指定します。
rule1.setDays("200");
// 最終変更時刻から 30 日後にオブジェクトのストレージクラスがアーカイブに変換されるように指定します。
// アップロードに失敗してから 3 日後にパートの期限が切れるように指定します。
rule1.setMultipartDays("3");
// 最終変更時刻から 15 日後にオブジェクトのストレージクラスが低頻度アクセス(IA)に変換されるように指定します。
rule1.setIADays("15");

BucketLifecycleRule rule2 = new BucketLifecycleRule();
rule2.setIdentifier("2");
rule2.setPrefix("B");
rule2.setStatus(true);
rule2.setDays("300");
rule2.setArchiveDays("30");
rule2.setMultipartDays("3");
rule2.setIADays("15");

ArrayList<BucketLifecycleRule> lifecycleRules = new ArrayList<BucketLifecycleRule>();
lifecycleRules.add(rule1);
lifecycleRules.add(rule2);
request.setLifecycleRules(lifecycleRules);
OSSAsyncTask task = oss.asyncPutBucketLifecycle(request, new OSSCompletedCallback<PutBucketLifecycleRequest, PutBucketLifecycleResult>() {
    @Override
    public void onSuccess(PutBucketLifecycleRequest request, PutBucketLifecycleResult result) {
        OSSLog.logInfo("code::"+result.getStatusCode());

    }

    @Override
    public void onFailure(PutBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
        OSSLog.logError("error: "+serviceException.getRawMessage());

    }
});

task.waitUntilFinished();

C++

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS へのアクセスに使用するアカウントに関する情報を初期化します。 */

    /* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    /* バケットの名前を指定します。 例:examplebucket。 */
    std::string BucketName = "examplebucket";

    /* ネットワークリソースなどのリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    SetBucketLifecycleRequest request(BucketName);
    std::string date("2022-10-12T00:00:00.000Z");

    /* ルールを一致させたいオブジェクトのタグを指定します。 */
    Tagging tagging;
    tagging.addTag(Tag("key1", "value1"));
    tagging.addTag(Tag("key2", "value2"));

    /* ライフサイクルルールを指定します。 */
    auto rule1 = LifecycleRule();
    rule1.setID("rule1");
    rule1.setPrefix("test1/");
    rule1.setStatus(RuleStatus::Enabled);
    rule1.setExpiration(3);
    rule1.setTags(tagging.Tags());

    /* 有効期限を指定します。 */
    auto rule2 = LifecycleRule();
    rule2.setID("rule2");
    rule2.setPrefix("test2/");
    rule2.setStatus(RuleStatus::Disabled);
    rule2.setExpiration(date);

    /* バケットでバージョン管理が有効になっている場合、rule3 がバケットに対して有効になるように指定します。 */
    auto rule3 = LifecycleRule();
    rule3.setID("rule3");
    rule3.setPrefix("test3/");
    rule3.setStatus(RuleStatus::Disabled);

    /* オブジェクトのストレージクラスが、最終変更時刻から 365 日後にアーカイブに変更されるように指定します。 */
    auto transition = LifeCycleTransition();  
    transition.Expiration().setDays(365);
    transition.setStorageClass(StorageClass::Archive);
    rule3.addTransition(transition);

    /* 期限切れの削除マーカーが自動的に削除されるように指定します。 */
    rule3.setExpiredObjectDeleteMarker(true);

    /* オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 10 日後に IA に変更されるように指定します。 */
    auto transition1 = LifeCycleTransition();  
    transition1.Expiration().setDays(10);
    transition1.setStorageClass(StorageClass::IA);

    /* オブジェクトの以前のバージョンのストレージクラスが、最終変更時刻から 20 日後にアーカイブに変更されるように指定します。 */
    auto transition2 = LifeCycleTransition();  
    transition2.Expiration().setDays(20);
    transition2.setStorageClass(StorageClass::Archive);

    /* バージョンが更新されてから 30 日後に以前のバージョンが削除されるように指定します。 */
    auto expiration  = LifeCycleExpiration(30);
    rule3.setNoncurrentVersionExpiration(expiration);

    LifeCycleTransitionList noncurrentVersionStorageTransitions{transition1, transition2};
    rule3.setNoncurrentVersionTransitionList(noncurrentVersionStorageTransitions);

    /* ライフサイクルルールを構成します。 */
    LifecycleRuleList list{rule1, rule2, rule3};
    request.setLifecycleRules(list);
    auto outcome = client.SetBucketLifecycle(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。 */
        std::cout << "SetBucketLifecycle fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースを解放します。 */
    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例:examplebucket。 */
const char *bucket_name = "examplebucket";
/* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国(杭州)リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* char* 文字列を使用して aos_string_t を初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。 */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // 2 つの追加パラメーターを指定します。
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* CNAME を使用して OSS にアクセスするかどうかを指定します。 値 0 は、CNAME が使用されていないことを示します。 */
    options->config->is_cname = 0;
    /* タイムアウト期間などのネットワークパラメーターを指定します。 */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* メモリを管理するためのメモリプールを作成します。 aos_pool_t は apr_pool_t と同等です。 メモリプールを作成するために使用されるコードは、APR ライブラリに含まれています。 */
    aos_pool_t *pool;
    /* メモリプールを作成します。 2 番目のパラメーターの値は NULL です。 この値は、プールが他のメモリプールを継承しないことを示します。 */
    aos_pool_create(&pool, NULL);
    /* オプションを作成して初期化します。 このパラメーターには、endpoint、access_key_id、access_key_secret、is_cname、curl などのグローバル構成情報が含まれています。 */
    oss_request_options_t *oss_client_options;
    /* メモリプール内のメモリリソースをオプションに割り当てます。 */
    oss_client_options = oss_request_options_create(pool);
    /* oss_client_options を初期化します。 */
    init_options(oss_client_options);
    /* パラメーターを初期化します。 */
    aos_string_t bucket;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    aos_list_t lifecycle_rule_list;   
    aos_str_set(&bucket, bucket_name);
    aos_list_init(&lifecycle_rule_list);
    /* 有効期間を指定します。 */
    oss_lifecycle_rule_content_t *rule_content_days = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_days->id, "rule-1");
    /* ルールを一致させたいオブジェクトの名前に含まれるプレフィックスを指定します。 */
    aos_str_set(&rule_content_days->prefix, "dir1");
    aos_str_set(&rule_content_days->status, "Enabled");
    rule_content_days->days = 3;
    aos_list_add_tail(&rule_content_days->node, &lifecycle_rule_list);
    /* 有効期限を指定します。 */
    oss_lifecycle_rule_content_t *rule_content_date = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_date->id, "rule-2");
    aos_str_set(&rule_content_date->prefix, "dir2");
    aos_str_set(&rule_content_date->status, "Enabled");
    /* 有効期限は UTC で表示されます。 */
    aos_str_set(&rule_content_date->date, "2023-10-11T00:00:00.000Z");
    aos_list_add_tail(&rule_content_date->node, &lifecycle_rule_list);
    /* ライフサイクルルールを構成します。 */
    resp_status = oss_put_bucket_lifecycle(oss_client_options, &bucket, &lifecycle_rule_list, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("put bucket lifecycle succeeded\n");
    } else {
        printf("put bucket lifecycle failed, code:%d, error_code:%s, error_msg:%s, request_id:%s\n",
            resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id);
    }
    /* メモリプールを解放して、リクエストに割り当てられたメモリリソースを解放します。 */
    aos_pool_destroy(pool);
    /* 割り当てられたグローバルリソースを解放します。 */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # この例では、中国(杭州)リージョンのエンドポイントが使用されています。 実際のエンドポイントを指定してください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します。
bucket = client.get_bucket('examplebucket')
# ライフサイクルルールを構成します。
bucket.lifecycle = [
  Aliyun::OSS::LifeCycleRule.new(
    :id => 'rule1', :enable => true, :prefix => 'foo/', :expiry => 3),
  Aliyun::OSS::LifeCycleRule.new(
    :id => 'rule2', :enable => false, :prefix => 'bar/', :expiry => Date.new(2016, 1, 1))
]

Go

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 操作

上記で説明したメソッドは、基本的に RESTful API に基づいて実装されており、ビジネスで高度なカスタマイズが必要な場合は、直接呼び出すことができます。 API を直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketLifecycle」をご参照ください。

よくある質問

ライフサイクルポリシーを使用してバケット内のすべてのオブジェクトをすばやく削除する方法

バージョン管理されていないバケット

バージョン管理されていないバケット内のすべてのオブジェクトと、不完全なマルチパートアップロードタスクからのパートを自動的に削除するライフサイクルルールを構成できます。

  1. OSS コンソールの バケット ページに移動し、バケット名をクリックします。

  2. 左側のナビゲーションツリーで、[コンテンツセキュリティ] > [バージョン管理] を選択し、バージョン管理が有効になっているかどうかを確認します。

    未开启版本控制

  3. 左側のナビゲーションツリーで、[データ管理] > [ライフサイクル] を選択します。 最終変更から 1 日後にバケット内のすべてのオブジェクトを自動的に削除し、1 日以上前に生成されたパートを削除するライフサイクルルールを構成します。

    screenshot_2025-07-01_17-59-32

バージョン管理されているバケット

バケットのバージョン管理を有効にすると、現在のバージョン、履歴バージョン、断片化されたマルチパートアップロードパート、およびオブジェクト用に生成された削除マーカーがバケットに保存されます。 このようなすべてのデータを自動的に削除するライフサイクルルールを構成できます。

  1. OSS コンソールの バケット ページに移動し、バケット名をクリックします。

  2. 左側のナビゲーションツリーで、[コンテンツセキュリティ] > [バージョン管理] を選択し、バージョン管理が有効になっているかどうかを確認します。

    screenshot_2025-07-02_10-58-23

  3. 左側のナビゲーションツリーで、[データ管理] > [ライフサイクル] を選択します。 最終変更から 1 日後にバケット内のすべてのオブジェクトを自動的に削除し、1 日以上前に生成されたパートを削除するライフサイクルルールを構成します。 削除マーカーも削除されます。

    screenshot_2025-07-02_10-58-23

バケットライフサイクルの設定エラー、InvalidArgument、StorageClass アーカイブのトランジションアクションの日数は、StorageClass IA のトランジションアクションよりも多くなければなりません というエラーメッセージが表示された場合はどうすればよいですか?

このエラーメッセージは、ストレージクラスの変換のストレージ期間の要件が満たされていないために表示されます。 オブジェクトのストレージクラスを IA、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブに変換するライフサイクルルールを構成する場合、各ストレージクラスのストレージ期間は次の要件を満たしている必要があります。

IA への変換のストレージ期間 < アーカイブへの変換のストレージ期間 < コールドアーカイブへの変換のストレージ期間 < ディープコールドアーカイブへの変換のストレージ期間

バケットのライフサイクルルールは、バケット内の既存のオブジェクトに適用されますか?

バケットのライフサイクルルールは、ルールが作成される前に存在するオブジェクトと、ルールが作成された後に作成されるオブジェクトに適用されます。 たとえば、最終変更から 30 日後にオブジェクトを削除するライフサイクルルールを 2023 年 10 月 7 日に構成したとします。 2023 年 10 月 5 日にアップロードされたオブジェクトは、2023 年 11 月 6 日に削除されます。 2023 年 10 月 8 日にアップロードされたオブジェクトは、2023 年 11 月 9 日に削除されます。

バケットの 1 つ以上のライフサイクルルールの構成項目を変更するにはどうすればよいですか?

たとえば、バケットに Rule1 と Rule2 の 2 つのライフサイクルルールがあるとします。 Rule1 の構成項目を変更するには、次の手順を実行します。

  1. GetBucketLifecycle 操作を呼び出して、バケットに構成されているすべてのライフサイクルルールをクエリします。 操作は、ライフサイクルルール Rule1 と Rule2 を返します。

  2. Rule1 の目的の構成項目を変更します。

  3. PutBucketLifecycle 操作を呼び出して、バケットに Rule1 と Rule2 を構成します。

バケットに構成されている 1 つ以上のライフサイクルルールを削除するにはどうすればよいですか?

DeleteBucketLifecycle 操作を呼び出すと、バケットに構成されているすべてのライフサイクルルールが削除されます。 たとえば、バケットに Rule1 と Rule2 の 2 つのライフサイクルルールがあるとします。 バケットに構成されているすべてのライフサイクルルールを削除するには、DeleteBucketLifecycle 操作を呼び出します。 Rule1 のみ削除するには、次の手順を実行します。

  1. GetBucketLifecycle 操作を呼び出して、バケットに構成されているすべてのライフサイクルルールをクエリします。 操作は、ライフサイクルルール Rule1 と Rule2 を返します。

  2. Rule1 を削除します。

  3. PutBucketLifecycle 操作を呼び出して、バケットに Rule2 を構成します。

OSS は、オブジェクトのストレージクラスが変換されたとき、またはライフサイクルルールに基づいて期限切れのオブジェクトが削除されたときにログを生成しますか?

はい、OSS は、オブジェクトのストレージクラスが変換されたとき、またはライフサイクルルールに基づいて期限切れのオブジェクトが削除されたときにログを生成します。 ログには次のフィールドが含まれています。

  • 操作

    • CommitTransition:変換先のストレージクラス(IA、アーカイブ、コールドアーカイブなど)を示します。

    • ExpireObject:ライフサイクルルールに基づいて削除された期限切れオブジェクトを示します。

  • 同期リクエスト

    lifecycle:ライフサイクルルールによってトリガーされるストレージクラスの変換またはオブジェクトの削除アクションを示します。

OSS ログフィールドの詳細については、「ログフィールド」をご参照ください。 請求の詳細については、「請求ルール」をご参照ください。

オブジェクトの削除マーカーを削除し、現在のオブジェクトバージョンを削除するライフサイクルルールを作成できますか?

いいえ、オブジェクトの削除マーカーを削除し、現在のオブジェクトバージョンを削除するライフサイクルルールを作成することはできません。 削除マーカーを削除するライフサイクルルールを作成できます。 削除マーカーを削除した後、オブジェクトの現在のバージョンを削除するライフサイクルルールを作成できます。

オブジェクトの最終変更時刻に基づいて、オブジェクトのストレージクラスを IA から標準に変換するライフサイクルルールを作成できますか?

いいえ、オブジェクトのストレージクラスを IA から標準に変換するライフサイクルルールを作成することはできません。 次のいずれかの方法を使用して、オブジェクトのストレージクラスを IA から標準に変換できます。

  • CopyObject 操作を呼び出す

    CopyObject 操作を呼び出して、オブジェクトのストレージクラスを IA から標準に変換できます。

  • ossutil を使用する

    ossutil set-meta コマンドで X-Oss-Storage-Class オプションを指定して、1 つ以上のオブジェクトのストレージクラスを IA から標準に変換できます。 詳細については、「オブジェクトメタデータの構成または更新」をご参照ください。

参考資料

  • デフォルトでは、OSS はオブジェクトのアップロード時刻をオブジェクトの最終変更時刻として使用します。 特定の操作により、オブジェクトの最終変更時刻が更新されます。 ただし、ライフサイクルルールに基づくストレージクラスの変換では、最終変更時刻は更新されません。 OSS オブジェクトの LastModified 属性に影響を与える操作のリストについては、「OSS オブジェクトの LastModified 属性に影響を与える操作は何ですか?」をご参照ください。

  • IA、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブオブジェクトのストレージクラスを変換し、最小ストレージ期間が終了する前にオブジェクトを削除すると、最小ストレージ期間全体に対して課金されます。 詳細については、「ストレージ期間が最小ストレージ期間よりも短いオブジェクトの料金はどのように計算されますか?」をご参照ください。

  • ライフサイクルルールを使用すると、バケット内のすべてのオブジェクトまたは名前に特定のプレフィックスが含まれるオブジェクトのストレージクラスを変換したり、そのようなオブジェクトを削除したりできます。 名前に特定の拡張子が含まれるオブジェクトを削除するには、ossutil で rm コマンドを実行できます。 詳細については、「rm」をご参照ください。

  • OSS にデータアクセスパターンに基づいてホットデータとコールドデータを識別させ、コールドデータをより費用対効果の高いストレージクラスに自動的に移動させる場合、最終アクセス時刻に基づいてライフサイクルルールを構成できます。 詳細については、「最終アクセス時刻に基づくライフサイクルルール」をご参照ください。

  • バケット内のすべてのオブジェクトのストレージクラスをクエリする方法の詳細については、「オブジェクトを一覧表示する」をご参照ください。