对象生命周期管理

转到示例

为了支持常见用例(例如为对象设置存留时间 (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 存储空间
    Archive 存储空间
    Multi-Regional 存储空间/Regional 存储空间1
    Multi-Regional 存储空间 Nearline 存储空间
    Coldline 存储空间
    Archive 存储空间
    Regional 存储空间 Nearline 存储空间
    Coldline 存储空间
    Archive 存储空间
    Standard 存储空间 Nearline 存储空间
    Coldline 存储空间
    Archive 存储空间
    Nearline 存储空间 Coldline 存储空间
    Archive 存储空间
    Coldline 存储空间 Archive 存储空间

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

    Cloud Storage 不会验证存储类别转换是否正确。这意味着您可以指定上表中未列出的存储类别转换,但该转换不会发生。您应验证您的生命周期规则是否使用列出的存储类别转换之一。

生命周期条件

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

  • 存在时间:当对象达到指定存在时间(以天为单位)时,则满足此条件。存在时间从对象的创建时间开始计算。例如,如果对象的创建时间是 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 存储空间对象使用 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 操作不受对象保全或保留政策的影响。

提前删除行为

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

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

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

到期时间元数据

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

请注意,缺少到期时间元数据并不一定意味着对象不会被删除,而是表示没有足够的信息来确定何时删除该对象或是否将删除该对象。例如,如果对象的创建时间是 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 主题发送通知。请注意,此功能不会记录执行操作的人员。

后续步骤