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

サンプルに移動

Cloud Storage では、オブジェクトの有効期間(TTL)の設定、非現行バージョンの保持、コスト管理を容易にするためのストレージ クラスのダウングレードなど、一般的な作業をサポートするため、オブジェクトのライフサイクル管理機能を提供しています。このページでは、この機能と使用可能なオプションについて説明します。

はじめに

バケットにライフサイクル管理の構成を割り当てることができます。たとえば、バケット内に現在あるオブジェクトと今後追加されるオブジェクトに適用されるルールを構成できます。オブジェクトがいずれかのルールの条件に一致すると、Cloud Storage はオブジェクトに指定された操作を自動的に実行します。次のような処理が例として挙げられます。

  • 365 日以上経過したオブジェクトのストレージ クラスを Coldline Storage にダウングレードする。
  • 2013 年 1 月 1 日より前に作成されたオブジェクトを削除する。
  • バージョニングが有効になっているバケット内の各オブジェクトで、最新のバージョン 3 つのみを維持する。

ライフサイクルの構成

ライフサイクル管理の構成は一連のルールから構成されます。ルールを定義する場合、任意の操作に任意の条件を指定できます。1 つのルールに複数の条件を指定した場合、オブジェクトがすべての条件に一致しないと、操作は実行されません。同じ操作を含む複数のルールを指定した場合、オブジェクトがルールのいずれかの条件に一致すると、操作が実行されます。1 つのルールには 1 つの操作のみを設定します。

複数のルールが 1 つのオブジェクトに対して同時にそれらの条件を満たしている場合、Cloud Storage は次の考慮事項に基づいて、1 つのルールのみに関連付けられた操作を実行します。

  • Delete 操作は、どの SetStorageClass 操作よりも優先されます。
  • 保存時のストレージ料金が最も安いストレージ クラスにオブジェクトを切り替える SetStorageClass 操作が優先されます。

なんらかの操作が行われると、オブジェクトが再評価されてから、追加の操作が実行されます。

たとえば、オブジェクトを削除するルールとオブジェクトのストレージ クラスを変更するルールがあり、両方のルールに同一の条件が設定されていると、条件に一致したときに削除操作が常に実行されます。オブジェクト クラスを Nearline Storage に変更するルールと Coldline Storage に変更するルールがあり、両方のルールに同一の条件が設定されていると、条件に一致したときには Coldline Storage への変更が常に実行されます。

ライフサイクルの操作

ライフサイクルのルールでは次の操作を使用できます。

  • 削除: オブジェクトを削除します。

    例外: オブジェクトのバージョニングが有効になっているバケットでは、オブジェクトのライブ バージョンを削除すると、非現行バージョンが作成されますが、非現行バージョンを削除すると、そのバージョンが永続的に削除されます。

  • SetStorageClass: ライブ オブジェクトのストレージ クラスを変更します。この操作は、次のストレージ クラスの移行で実行できます。

    元のストレージ クラス 新しいストレージ クラス
    Durable Reduced Availability(DRA)Storage Nearline Storage
    Coldline Storage
    Archive Storage
    Multi-Regional Storage/Regional Storage1
    Multi-Regional Storage Nearline Storage
    Coldline Storage
    Archive Storage
    Regional Storage Nearline Storage
    Coldline Storage
    Archive Storage
    Standard Storage Nearline Storage
    Coldline Storage
    Archive Storage
    Nearline Storage Coldline Storage
    Archive Storage
    Coldline Storage Archive Storage

    1 region 内のバケットの場合、新しいストレージ クラスを Multi-Regional Storage にすることはできません。マルチリージョンまたはデュアルリージョンのバケットの場合、新しいストレージ クラスを Regional Storage にすることはできません。

    Cloud Storage では、ストレージ クラスの移行の正確性は検証されません。つまり、上記の表にないストレージ クラスの移行を指定することはできますが、移行は行われません。ライフサイクル ルールで、リストされているいずれかのストレージ クラスの移行が使用されていることを確認する必要があります。

ライフサイクルの条件

ライフサイクル ルールには次の条件を指定できます。

  • Age: オブジェクトの作成後に指定の日数が経過すると、この条件が満たされます。Age は、オブジェクトが作成された時点から測定されます。たとえば、オブジェクトの作成時点が 2019/01/10 10:00 UTC で、Age 条件が 10 日であれば、2019/01/20 10:00 UTC の時点でオブジェクトの条件が満たされたことになります。これは、オブジェクトの作成後にバージョニングでオブジェクトが非現行バージョンになる場合にも当てはまります。

  • CreatedBefore: この条件は、オブジェクトが指定の日付(UTC)の深夜より前に作成されていると満たされます。

  • IsLive: 通常、この条件はオブジェクトのバージョニングと併用されます。false に設定すると、この条件は、オブジェクトが非現行バージョンである場合に満たされるようになります。true に設定すると、この条件は、オブジェクトがライブ バージョンである場合に満たされるようになります。オブジェクトのバージョニングを使用しない場合、すべてのオブジェクトはライブ バージョンとみなされ、IsLivetrue である場合に一致します。

  • MatchesStorageClass: この条件は、バケット内のオブジェクトが指定されたストレージ クラスに保存されると満たされます。MatchesStorageClass には、STANDARDNEARLINECOLDLINEARCHIVEMULTI_REGIONALREGIONALDURABLE_REDUCED_AVAILABILITY の値を使用できます。

    通常、Standard Storage オブジェクトで MatchesStorageClass 条件を使用する場合は、次のものも含める必要があります。

    • バケットがリージョンにある場合、条件に REGIONALDURABLE_REDUCED_AVAILABILITY を含めます。

    • バケットがマルチリージョンまたはデュアルリージョンにある場合は、条件に MULTI_REGIONALDURABLE_REDUCED_AVAILABILITY を含めます。

    これらの追加クラスを追加すると、バケット内のレガシー ストレージ クラスに設定されている古いオブジェクトもライフサイクル ルールの対象となります。

  • NumberOfNewerVersions: 通常、この条件はオブジェクトのバージョニングと併用されます。この条件の値がN に設定されている場合、オブジェクトのバージョンは、それよりも新しいバージョンが少なくとも N バージョン(ライブ バージョンを含む)存在する場合に条件を満たします。ライブ オブジェクト バージョンの場合、それよりも新しいバージョンの数は 0 とみなされます。最も新しい非現行バージョンの場合、それよりも新しいバージョンの数は 1 であり(ライブ オブジェクト バージョンがない場合は 0)、以降、同様に続きます。

すべての条件はオプションですが、少なくとも 1 つの条件が必要です。存在しない操作や条件を指定するなど、無効なライフサイクル構成を行うと、400 Bad request エラーが返され、既存のライフサイクル構成はそのまま残ります。

ライフサイクル構成の使用例については、オブジェクトのライフサイクルの管理をご覧ください。ライフサイクル構成ファイルの一般的な形式については、JSON のバケット リソース表現XML のライフサイクル構成形式をご覧ください。

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

  • Cloud Storage は、オブジェクトのライフサイクル管理が構成されたバケット内のすべてのオブジェクトを定期的に検査し、バケットのルールに従って適用されるすべての操作を実行します。Cloud Storage は非同期で操作を実行します。このため、条件が一致してから操作が実行されるまでに時間差が生じる場合があります。

    たとえば、オブジェクトが削除の条件を満たしても、オブジェクトが直ちに削除されないことがあります。そのため、オブジェクトにライフサイクル アクションが実行されるまで、オブジェクトは表示されます。オブジェクトが存在している間、該当する料金が適用されます。例外はありません。オブジェクトが Delete アクションの対象である場合、age 条件だけが含まれるルールによって、保存時のストレージ コストがかからなくなります。

  • ライフサイクル構成に対する更新が反映されるまでに、最大で 24 時間かかります。したがって、ライフサイクル管理の構成を変更してから 24 時間が経過するまでは、古い構成で操作が実行される可能性があります。

    たとえば、Age 条件を 10 日から 20 日に変更した場合、最大 24 時間、古い構成に基づいて、11 日目のオブジェクトがオブジェクトのライフサイクル管理に基づいて削除される可能性があります。

  • オブジェクトにオブジェクト保留が設定されている場合、あるいは保持ポリシーがまだ処理されていない場合、オブジェクト ライフサイクルの Delete アクションはオブジェクトに適用されません。オブジェクト保留が設定されている場合、または保持ポリシーの制限がある場合、オブジェクトに対する制限が解除された後に Delete アクションが実行されます。

  • オブジェクト ライフサイクルの SetStorageClass アクションは、オブジェクト保留や保持ポリシーの影響を受けません。

早期削除の動作

オブジェクト ライフサイクル管理では、ストレージ クラスが変更されても、オブジェクトの書き換えを行いません。このため、SetStorageClass 機能によりオブジェクトを Nearline Storage、Coldline Storage、または Archive Storage に移行した場合、それ以降の早期削除と関連する課金は、ストレージ クラスがいつ変更されたかに関係なく、オブジェクトの最初の作成日時に基づいて行われます。

たとえば、オブジェクトを Standard Storage としてアップロードし、20 日後にライフサイクルの構成でオブジェクトのストレージ クラスを Nearline Storage に変更したとします。ここでオブジェクトを削除すると、オブジェクトの作成から 20 日経過しているため、10 日分の早期削除料金が発生します。ストレージ クラスを Nearline Storage に変更してから 10 日後にオブジェクトを削除した場合、オブジェクトの作成から 30 日経過しているため、早期削除料金は発生しません。

また、オブジェクトを Standard Storage としてアップロードし、20 日後に書き換え操作でストレージ クラスを変更したとします(Nearline Storage に戻したとします)。ここでオブジェクトを削除すると、書き換え時間が新しい作成時間になるため、30 日間の早期削除料金が発生します。同様に、書き換えから 10 日後にオブジェクトを削除すると、20 日間の早期削除料金が発生します。

有効期限のメタデータ

Delete 処理が Age 条件でバケットに指定されている場合(および matchesStorageClass 以外の条件なし)、一部のオブジェクトに有効期限メタデータがタグ付けされることがあります。オブジェクトの有効期限は、オブジェクトがオブジェクトのライフサイクル管理による削除の対象となる(または対象となった)日時を示します。バケットのライフサイクル構成または保持ポリシーが変更されると、有効期限が変更される可能性があります。

有効期限のメタデータが存在しない場合、必ずしもオブジェクトが削除されないことを意味するわけではなく、削除の有無や削除の時期について判断する十分な情報がないことを意味します。 たとえば、オブジェクトの作成時点が 2020/01/10 10:00 UTC で、Age 条件が 10 日であれば、オブジェクトの有効期限は 2020/01/20 10:00 UTC になります。ただし、次の場合はオブジェクトに有効期限は使用できません。

  • Delete ルールにその他の条件が指定されている(matchesStorageClass を除く)。

  • オブジェクトのストレージ クラスを含まない matchesStorageClass 条件を使用している。

  • Cloud Storage は保留の解除を確認できないため、オブジェクトは保留状態になります。

オブジェクトがすぐに削除されない場合であっても、有効期限後にストレージの料金が発生することはありません。削除される前のオブジェクトにはひき続きアクセスでき、ストレージ以外の料金(リクエスト、ネットワーク帯域幅)が発生します。オブジェクトの有効期限が利用できない場合、オブジェクトが削除されるまでストレージの料金が発生します。

有効期限を設定する際は、次の点に注意してください。

  • バケットに保持ポリシーが設定されている場合、オブジェクト ライフサイクル管理の経過条件を満たし、オブジェクトが保存ポリシーで指定された保持期間を満了する時間が有効期限になります。

  • 異なるライフサイクル管理ルールにより、オブジェクトに適用される有効期限が複数存在し、それらが矛盾する場合は、最も早い有効期限が使用されます。

ライフサイクルの処理を追跡するためのオプション

Cloud Storage が行うライフサイクル管理の処理を追跡するには、次のオプションのいずれかを使用します。

  • Cloud Storage アクセスログを使用します。この機能は、処理と処理を行ったユーザーの両方をログに記録します。ログエントリの cs_user_agent フィールドの値が GCS Lifecycle Management の場合、ライフサイクルの構成に応じて、Cloud Storage が処理を実行しています。

  • バケット用の Cloud Storage の Pub/Sub 通知を有効にします。この機能は、指定された操作が行われたときに、選択した Pub/Sub トピックに通知を送信します。この機能では、処理を実行したユーザーは記録されないことに注意してください。

次のステップ