对象生命周期管理

为了支持常见用例(例如为对象设置生存时间 (TTL)、归档旧版本对象或“降级”对象的存储类别以帮助管理费用),Cloud Storage 提供了对象生命周期管理功能。本页面介绍了此功能,以及使用此功能时可用的选项。如需了解如何启用对象生命周期管理以及查看生命周期政策的示例,请参阅管理生命周期

简介

您可以将生命周期管理配置分配给存储分区。该配置包含一组适用于存储分区中的当前和未来对象的规则。当对象满足其中一个规则的条件时,Cloud Storage 会自动对该对象执行指定的操作。以下是一些示例用例:

  • 将超过 365 天的对象的存储类别降级为 Coldline 存储空间。
  • 删除 2013 年 1 月 1 日之前创建的对象。
  • 在启用版本控制的存储分区中仅保留每个对象的 3 个最新版本。

生命周期配置

每个生命周期管理配置都包含一组规则。 定义规则时,您可以为任何操作指定任意一组条件。 如果在规则中指定多个条件,则对象必须匹配适用于要采取的操作的所有条件。如果指定包含相同操作的多个规则,则在对象与任何规则中的条件匹配时执行操作。每条规则只应包含一个操作。

如果单个对象面对多个操作,则 Cloud Storage 仅执行其中一个操作,并且在执行任何其他操作之前将重新评估该对象。Delete 操作优先于 SetStorageClass 操作。如果指定了多个 SetStorageClass 操作,则会选择切换到具有最低静态存储空间价格的存储类别的操作。

例如,如果您具有一个删除对象的规则和另一个更改对象存储类别的规则,但两个规则都使用完全相同的条件,则在满足条件时始终会执行删除操作。如果您有一个规则会将对象的类别更改为“Nearline 存储空间”,而另一个规则会将对象的类别更改为“Coldline 存储空间”,但两个规则都使用完全相同的条件,则在满足条件时,对象的类别始终更改为“Coldline 存储空间”。

生命周期操作

生命周期规则支持以下操作:

  • 删除:删除活跃和/或归档对象。(活跃对象是非归档世代的对象。如需了解详情,请参阅对象版本控制。)此操作可以应用于版本化和非版本化对象。在启用了版本控制的存储分区中,删除活动对象后,系统会归档对象;而删除归档对象后,系统会永久删除该对象。

  • SetStorageClass:更改活动和/或归档对象的存储类别。此操作可以应用于版本化和非版本化对象。此操作支持以下存储类别转换:

    原始存储类别 新存储类别
    Durable Reduced Availability (DRA) 存储空间 Nearline 存储空间
    Coldline 存储空间Multi-Regional 存储空间/Regional 存储空间1
    Multi-Regional 存储空间 Nearline 存储空间
    Coldline 存储空间
    Regional 存储空间 Nearline 存储空间
    Coldline 存储空间
    Standard 存储空间 Nearline 存储空间
    Coldline 存储空间
    Nearline 存储空间 Coldline 存储空间

    1 对于 [区域] 位置中的存储分区,新的存储类别不能为 Multi-Regional 存储空间。对于多区域位置或双区域位置中的存储分区,新的存储类别不能是 Regional 存储空间。

生命周期条件

生命周期规则支持以下条件:

  • 存在时间:当对象达到指定存在时间(以天为单位)时,则满足此条件。存在时间从对象的创建时间开始计算。例如,如果对象的创建时间是 2019/01/10 10:00 UTC 且 Age 条件为 10 天,则在 2019/01/20 10:00 UTC(以及之后)对象可满足条件。即使对象在创建后的某个时间通过对象版本控制功能归档,也是如此。

  • CreatedBefore:在指定日期(UTC 时间)的午夜之前创建对象时,则满足此条件。

  • IsLive:如果此值为 true,则此生命周期条件仅匹配活动对象;如果此值为 false,则条件仅匹配归档对象。为了满足这一条件,非版本化存储分区中的对象将被视为活动对象。

  • MatchesStorageClass:当存储分区中的对象的存储类别是指定的存储类别时,则满足此条件。您可以为 MatchesStorageClass 使用以下值:STANDARDNEARLINECOLDLINEMULTI_REGIONALREGIONALDURABLE_REDUCED_AVAILABILITY

    通常,如果您打算在 Standard 存储空间对象上使用 MatchesStorageClass 条件,则还应包括以下内容:

    • 如果存储分区位于一个区域位置,请在条件中包含 REGIONALDURABLE_REDUCED_AVAILABILITY

    • 如果存储分区位于多区域位置或双区域位置,请在条件中包含 MULTI_REGIONALDURABLE_REDUCED_AVAILABILITY

    包含这些额外的类别可确保生命周期规则涵盖存储分区中可能设置为旧存储类别的旧对象。

  • NumberOfNewerVersions:仅与版本化对象相关。如果此条件的值设置为 N,则当至少存在 N 个比对象版本更新的版本(包括当前版本)时,该对象满足条件。对于活跃对象,较新版本的数量被视为 0。对于最新的归档版本,较新版本的数量为 1(如果没有活跃对象,则为 0),依此类推。

所有条件都是可选的,但至少需要一个条件。如果尝试设置无效的生命周期配置(例如,使用不存在的操作或条件),您会收到 400 Bad request 错误响应,并且所有的现有生命周期配置仍会保留在原位。

如需了解使用生命周期配置的示例,请参阅管理对象生命周期。如需了解生命周期配置文件的通用格式,请参阅适用于 JSON 的存储分区资源表示法适用于 XML 的生命周期配置格式

对象生命周期行为

  • Cloud Storage 会定期检查已配置对象生命周期管理的存储分区中的所有对象,并根据存储分区规则执行所有适用的操作。Cloud Storage 以异步方式执行操作,因此在满足条件后,可能须等待一段时间才会执行操作。

    例如,对象满足删除条件时,系统可能不会立即删除该对象。因此,在系统对该对象执行生命周期操作之前,您仍将看到该对象。适用费用在对象存在的情况下仍然适用,但有一个例外:如果对象由于仅包含 age 条件的规则将被执行 delete 操作时,不会收取静态存储费用。

  • 对生命周期配置做出的更新可能需要最长 24 小时才能生效。这意味着,当您更改生命周期配置时,对象生命周期管理可能仍会根据旧配置执行操作(此情况最多维持 24 小时)。

    例如,如果将 Age 条件从 10 天更改为 20 天,则对象生命周期管理可能会由于旧配置的条件在之后最长 24 小时的时间里删除存在时间为 11 天的对象。

  • 对象生命周期的 Delete 操作在对象上设置了对象保全或尚未达到的保留政策时,不会对对象生效。对象具有保全或保留政策限制时发生的任何 Delete 操作都会在限制不再适用于对象后进行。

  • 对象生命周期的 SetStorageClass 操作不受对象保全或保留政策的影响。

提前删除“Nearline 存储空间”和“Coldline 存储空间”对象

对象生命周期管理在更改对象的存储类别时不会重新写入该对象。这意味着,在使用 SetStorageClass 功能将对象转换为 Nearline 存储空间或 Coldline 存储空间时,任何后续的提前删除操作及其相关费用都以对象的原始创建时间为准(无论存储类别在何时发生更改)。

例如,假设您在上传对象时将对象存储类别设为“Standard 存储空间”,20 天后,您的生命周期配置将对象的存储类别更改为“Nearline 存储空间”。如果您随后立即删除该对象,则会产生 10 天的提前删除费用,因为该对象已存在 20 天。如果在将对象的存储类别更改为“Nearline 存储空间”10 天后删除该对象,则不会产生提前删除费用,因为该对象已存在 30 天。

作为对比,假设您在上传对象时将对象存储类别设为“Standard 存储空间”,20 天后,您使用重写命令更改对象的存储类别(仍然更改为“Nearline 存储空间”)。如果您随后立即删除该对象,则会产生 30 天的提前删除全额费用,因为重写时间将成为新的创建时间。同样地,如果您在重写后等待 10 天再删除对象,则会产生 20 天的提前删除费用。

到期时间元数据

如果为具有 Age 条件(没有 NumberOfNewerVersions 条件)的存储分区指定 Delete 操作,则一些对象可能会带有到期时间元数据标记。对象的到期时间表示未来(或过去)的某个时间,从这一时间起,对象可以被生命周期管理功能删除。到期时间可能会随存储分区的生命周期配置或保留政策变化而发生改变。

请注意,缺少到期时间元数据并不一定意味着对象不会被删除,而是表示没有足够的信息来确定何时删除该对象或是否将删除该对象。例如,如果对象的创建时间是 2013/01/10 10:00 UTC 且 Age 条件设置为 10 天,则对象到期时间为 2013/01/20 10:00 UTC。但是,如果符合以下条件,则无法为对象使用到期时间:

  • 还指定了 NumberOfNewerVersions 条件。在这种情况下,如果添加新版本,仍可能会删除对象的旧版本。

  • 还指定了 CreatedBefore 条件并将其设置为 2013-01-01,此时不会应用到期时间,因为对象不满足此条件。

  • 该对象处于保全,因为 Cloud Storage 无法知道何时将移除保全。

即使未立即删除对象,我们也不会在对象到期时间后对您收取存储费用。您可以在删除对象之前继续访问该对象,并承担其他费用(请求、网络带宽)。如果无法为对象使用到期时间,对象将被收取存储费用(直到被删除为止)。

您可以在元数据(如果可用)中访问对象的到期时间。REST API 在 x-goog-expiration 响应标头中返回对象的到期时间。

处理到期时间时,请注意以下事项:

  • 如果存储分区具有保留政策,则到期时间是对象生命周期管理期限条件的较晚时间以及对象满足保留政策指定的保留期限的时间。

  • 如果不同的生命周期管理规则导致存在多个适用于对象的到期时间(相互冲突),则系统会使用适用的最早到期时间。

用于跟踪生命周期操作的选项

如需跟踪 Cloud Storage 执行的生命周期管理操作,请使用以下选项之一:

  • 使用 Cloud Storage 访问日志。此功能会记录操作和执行操作的人员。日志条目 cs_user_agent 字段的值是 GCS Lifecycle Management 时,表示该操作是由 Cloud Storage 根据生命周期配置执行的。

  • 为您的存储分区启用适用于 Cloud Storage 的 Cloud Pub/Sub 通知。当发生指定的操作时,此功能会将通知发送到您选择的 Cloud Pub/Sub 主题。请注意,此功能不会记录执行操作的人员。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面