生命周期配置元素 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

生命周期配置元素

您可以将 S3 生命周期配置指定为 XML,该配置包含一个或多个生命周期规则。

<LifecycleConfiguration> <Rule> ... </Rule> <Rule> ... </Rule> </LifecycleConfiguration>

每个规则由以下内容组成:

  • 规则元数据,包含规则 ID 以及用于指示规则是已启用还是已禁用的状态。如果规则处于禁用状态,则 Amazon S3 不会执行规则中指定的任何操作。

  • 筛选条件,用于标识规则将应用于的对象。您可以通过使用对象大小、对象密钥前缀、一个或多个对象标签,或者筛选条件的合并项来指定筛选条件。

  • 您希望 Amazon S3 执行指定操作时的一个或多个转换或过期操作,带有位于对象的生命周期内的日期或时间段。

以下部分介绍了 S3 生命周期配置中的 XML 元素。有关示例配置,请参阅 S3 生命周期配置的示例

ID 元素

一个 S3 生命周期配置最多可以有 1000 个规则。此限制不可调整。<ID> 元素唯一地标识规则。ID 长度最多为 255 个字符。

Status 元素

<Status> 元素值可以是 Enabled 或 Disabled。如果规则处于禁用状态,则 Amazon S3 不会执行规则中定义的任何操作。

Filter 元素

生命周期规则可基于您在该规则中指定的 <Filter> 元素应用于桶中的所有对象或一部分对象。

您可以按键前缀、对象标签或二者的组合(在此情况下,Amazon S3 使用逻辑 AND 组合筛选条件)筛选对象。考虑以下示例:

  • 使用键前缀指定筛选条件 – 此示例显示一个 S3 生命周期规则,此规则基于键名前缀 (logs/) 应用于一部分对象。例如,此生命周期规则应用于对象logs/mylog.txtlogs/temp1.txtlogs/test.txt。此规则不应用于对象 example.jpg

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter> transition/expiration actions. ... </Rule> ... </LifecycleConfiguration>

    如果您要基于不同的键名前缀将生命周期操作应用于一部分对象,可指定单独的规则。在每个规则中,指定基于前缀的筛选条件。例如,要描述具有键前缀 projectA/projectB/ 的对象的生命周期操作,可指定两个规则,如下所示。

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter> transition/expiration actions. ... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    有关对象键的更多信息,请参阅 创建对象键名称

  • 指定基于对象标签的筛选条件 – 在以下示例中,此生命周期规则指定基于标签 (key) 和值 (value) 的筛选条件。随后,此规则仅应用于具有特定标签的一部分对象。

    <LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>key</Key> <Value>value</Value> </Tag> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    您可以指定基于多个标签的筛选条件。您必须在 <And> 元素中包含标签,如以下示例所示。此规则指示 Amazon S3 对具有两个标签(带特定的标签键和值)的对象执行生命周期操作。

    <LifecycleConfiguration> <Rule> <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> transition/expiration actions. </Rule> </Lifecycle>

    此生命周期规则应用于具有指定的两个标签的对象。Amazon S3 执行逻辑 AND。请注意以下几点:

    • 每个标签的键和值必须完全匹配。

    • 此规则应用于具有规则中指定的所有标签的一部分对象。如果某个对象指定了其他标签,则该规则仍将适用。

    注意

    当您在筛选条件中指定多个标签时,每个标签键必须是唯一的。

  • 指定基于前缀和一个或多个标签的筛选条件 – 在生命周期规则中,您可以指定基于键前缀和一个或多个标签的筛选条件。同样,您也必须在 <And> 元素中包含所有这些内容,如下所示。

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

    Amazon S3 使用逻辑 AND 组合这些筛选条件。即,此规则应用于具有特定键前缀和特定标签的一部分对象。一个筛选条件只能有一个前缀以及零个或多个标签。

  • 您可以指定 empty filter(空筛选条件),在此情况下,此规则应用于桶中的所有对象。

    <LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>
  • 要按照 object size(对象大小)筛选规则,您可以指定最小的大小 (ObjectSizeGreaterThan) 或最大大小 (ObjectSizeLessThan),也可以指定一系列对象大小。

    对象大小值以字节为单位。最大筛选条件大小为 5TB。某些存储类具有最小对象大小限制,有关详细信息,请参阅 比较 Amazon S3 存储类

    <LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

    如果要指定对象大小范围,ObjectSizeGreaterThan 整数必须小于 ObjectSizeLessThan 值。当使用多个筛选条件时,必须将筛选条件包装在 <And> 元素中。以下示例显示了如何指定范围在 500 到 64000 字节之间的对象。

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

用于描述生命周期操作的元素

通过在 S3 生命周期规则中指定一个或多个以下预定义操作,您可以指示 Amazon S3 在对象的生命周期内执行特定操作。这些操作的效果取决于桶的版本控制状态。

  • Transition 操作元素 – 您指定 Transition 操作以将对象从一个存储类转换为另一个存储类。有关转换对象的更多信息,请参阅 受支持的转换和相关限制。达到对象生命周期内指定的日期或时间段后,Amazon S3 将执行该转换。

    对于受版本控制的桶(已启用版本控制或已暂停版本控制的桶),Transition 操作适用于当前对象版本。为了管理非当前版本,Amazon S3 定义了 NoncurrentVersionTransition 操作(本主题稍后会对此描述)。

  • Expiration 操作元素Expiration 操作使规则中标识的对象过期,并且适用于任意 Amazon S3 存储类中符合条件的对象。有关存储类别的更多信息,请参阅 使用 Amazon S3 存储类。Amazon S3 使所有过期的对象不可用。是否永久删除对象取决于桶的版本控制状态。

    • 不受版本控制的桶Expiration 操作导致 Amazon S3 永久删除该对象。

    • 受版本控制的桶 – 对于受版本控制的桶(即,已启用版本控制或已暂停版本控制),有一些指导 Amazon S3 如何处理 Expiration 操作的注意事项。对于启用版本控制或暂停版本控制的桶,以下内容适用:

      • Expiration 操作仅适用于当前版本 (对非当前对象版本没有影响)。

      • 如果有一个或多个对象版本,并且删除标记是当前版本,则 Amazon S3 不会执行任何操作。

      • 如果当前对象版本是唯一的对象版本并且它还是删除标记(也称为过期对象删除标记,在这种情况下,所有对象版本都已删除,您只剩下一个删除标记),则 Amazon S3 将删除过期对象删除标记。您还可以使用过期操作来指示 Amazon S3 移除所有过期对象删除标记。有关示例,请参阅 示例 7:移除过期对象删除标记

      有关更多信息,请参阅在 S3 存储桶中使用版本控制

      设置 Amazon S3 以管理过期时,还应该考虑以下各项:

      • 已启用版本控制的桶

        如果当前对象版本不是删除标记,Amazon S3 将添加具有唯一的版本 ID 的删除标记。这会使当前对象版本变为非当前版本,并使删除标记变为当前版本。

      • 已暂停版本控制的桶

        在已暂停版本控制的桶中,过期操作将使 Amazon S3 创建版本 ID 为 null 的删除标记。此删除标记会在版本层次结构中将任何对象版本替换为 null 版本 ID,从而实际上删除对象。

此外,Amazon S3 还提供可用于管理受版本控制的桶(即,启用了版本控制和暂停了版本控制的桶)中的非当前对象版本的以下操作。

  • NoncurrentVersionTransition 操作元素 — 使用此操作可指定何时将 Amazon S3 转换对象转换到指定存储类别。您可以根据自对象变为非当前对象以来的一定天数来确定此过期日期。除了天数之外,您还可以提供要保留的最大非当前版本数。此值确定在 Amazon S3 可以对给定版本执行关联操作之前,必须存在多少个较新的非当前版本。您还需要提供 Filter 元素,以指定最大非当前版本数量。如果您未指定 Filter 元素,Amazon S3 将在您提供最大数量的非当前版本时生成 InvalidRequest 错误。

    有关转换对象的更多信息,请参阅 受支持的转换和相关限制。有关当您在 NoncurrentVersionTransition 操作中指定天数时 Amazon S3 如何计算日期的详细信息,请参阅 生命周期规则:基于对象的存在期限

  • NoncurrentVersionExpiration 操作元素 – 使用此操作可指定 Amazon S3 何时永久移除非当前版本的对象。删除的对象无法恢复。您可以根据自对象变为非当前对象以来的一定天数来确定此过期日期。除了天数之外,您还可以提供要保留的最大非当前版本数。此值指定在 Amazon S3 可以对给定版本执行关联操作之前,必须存在多少较新的非当前版本。您还需要提供 Filter 元素,以指定最大非当前版本数量。如果您未指定 Filter 元素,Amazon S3 将在您提供最大数量的非当前版本时生成 InvalidRequest 错误。

    当您需要更正任何意外删除或覆盖时,非当前对象的延时移除可能很有帮助。例如,您可以配置一个到期规则,以便在对象变为非当前版本五天后删除非当前版本。例如,假设在 2014 年 1 月 1 日上午 10:30 UTC,您创建了名为 photo.gif 的对象 (版本 ID 111111)。在 2014 年 2 月 1 日上午 11:30 UTC,您意外删除了 photo.gif (版本 ID 111111),这将导致使用新版本 ID (如版本 ID 4857693) 创建一个删除标记。您现在有五天时间可以在永久删除之前,恢复原始版本的 photo.gif (版本 ID 111111)。在 2014 年 1 月 8 日 00:00 UTC,有关过期的生命周期规则执行并永久删除 photo.gif(版本 ID 111111)(在它成为非当前版本五天之后)。

    有关当您在 NoncurrentVersionExpiration 操作中指定天数时 Amazon S3 如何计算日期的详细信息,请参阅 生命周期规则:基于对象的存在期限

    注意

    对象过期生命周期配置不会删除未完成的分段上传。要删除未完成的分段上传,您必须使用 AbortIncompleteMultipartUpload 生命周期配置操作,如本节后面所述。

除了转换和过期操作之外,您还可以使用以下生命周期配置操作来指示 Amazon S3 停止未完成的分段上传。

  • AbortIncompleteMultipartUpload 操作元素 – 使用此元素可设置您希望允许分段上传保持运行的最长时间(天)。如果适用的分段上传(由生命周期规则中指定的键名 prefix 确定)未在预定义的时间段内成功完成,Amazon S3 将停止未完成的分段上传。有关更多信息,请参阅 中止分段上传

    注意

    您无法在指定了基于对象标签的筛选条件的规则中指定此生命周期操作。

  • ExpiredObjectDeleteMarker 操作元素 – 在启用了版本控制的桶中,包含零个非当前版本的删除标记称为“过期对象删除标记”。您可以使用此生命周期操作来指示 S3 删除过期对象删除标记。有关示例,请参阅 示例 7:移除过期对象删除标记

    注意

    您无法在指定了基于对象标签的筛选条件的规则中指定此生命周期操作。

Amazon S3 如何计算对象已成为非当前版本的时间长度

在启用版本控制的桶中,您可以有一个对象的多个版本。当前版本始终有一个,以及零个或零个以上非当前版本。每次上传对象时,当前版本都保留为非当前版本,新添加的版本 (后继者) 会成为当前版本。为了确定对象成为非当前版本的天数,Amazon S3 会查看其后继者的创建时间。Amazon S3 使用自后继者创建以来的天数作为对象成为非当前版本的天数。

在使用 S3 生命周期配置时还原对象的以前版本

按照主题还原早期版本中的详细说明,您可以使用以下两种方法中的任一方法来检索对象的以前版本:

  1. 通过将对象的非当前版本复制到相同桶中。复制的对象将成为该对象的当前版本,且所有对象版本都保留。

  2. 通过永久删除当前版本的对象。当您删除当前对象版本时,实际上是将非当前版本转换为该对象的当前版本。

当您正在将 S3 生命周期配置规则用于启用版本控制的桶时,我们建议的最佳实践是使用第一种方法。

S3 生命周期在最终一致的模型下运行。在更改传播之前,永久删除的当前版本可能不会消失(Amazon S3 可能不知道此删除操作)。同时,您配置用于使非当前对象过期的生命周期规则可能会永久删除非当前对象,包括您要还原的对象。因此,复制旧版本 (按照第一种方法中的建议) 是更安全的替代方法。

下表总结了对对象执行的 S3 生命周期配置规则操作的行为与包含对象的桶的版本控制状态的关系。

生命周期操作与桶版本控制状态
操作 不受版本控制的桶(未启用版本控制) 已启用版本控制的桶 已暂停版本控制的桶

Transition

达到对象生命周期中指定的日期或时间段时。

Amazon S3 将对象转换为指定存储类。 Amazon S3 将对象的当前版本转换为指定存储类。 行为与启用了版本控制的桶相同。

Expiration

达到对象生命周期中指定的日期或时间段时。

Expiration 删除对象,删除的对象无法恢复。 如果当前版本不是删除标记,Amazon S3 将创建一个删除标记(这会变为当前版本),现有当前版本将保留为非当前版本。 生命周期使用 null 版本 ID 创建删除标记,这会成为当前版本。如果对象当前版本的版本 ID 是 null,则 Expiration 操作永久删除此版本。否则,当前版本保留为非当前版本。

NoncurrentVersionTransition

当对象在指定天数内被归类为非当前版本时,或者超过了要保留的非当前版本的指定最大版本数时。

NoncurrentVersionTransition 无效。

Amazon S3 将非当前对象版本转换为指定存储类。

行为与启用了版本控制的桶相同。

NoncurrentVersionExpiration

当对象在指定天数内被归类为非当前版本时,或者超过了要保留的非当前版本的指定最大版本数时。

NoncurrentVersionExpiration 无效。 NoncurrentVersionExpiration 操作删除对象的非当前版本,删除的对象无法恢复。 行为与启用了版本控制的桶相同。

生命周期规则:基于对象的存在期限

您可以指定 Amazon S3 能够执行操作的时间段(自对象创建(或修改)以来的天数)。

当您在 S3 生命周期配置中的 TransitionExpiration 操作中指定天数时,请注意以下事项:

  • 它是自对象创建以来发生操作的天数。

  • Amazon S3 按以下方式计算时间:将在规则中指定的天数与对象创建时间相加,然后将得出的时间舍入至下一日的午夜 UTC。例如,如果对象的创建时间是 2014 年 1 月 15 日上午 10:30 UTC,并且您在转换规则中指定了 3 天,则对象的转换日期将计算为 2014 年 1 月 19 日 00:00 UTC。

注意

Amazon S3 仅为每个对象保持上次修改日期。例如,Amazon S3 控制台在对象 Properties (属性) 窗格中显示 Last Modified (上次修改日期) 日期。最初创建新对象时,此日期反映对象的创建日期。如果您替换对象,此日期会相应地更改。因此,在我们使用术语创建日期时,它与上次修改日期术语是同义词。

当在生命周期配置中的 NoncurrentVersionTransitionNoncurrentVersionExpiration 操作中指定天数时,请注意以下几点:

  • 它是从对象版本变为非当前版本以来(即,自对象被覆盖或删除起)的天数,作为 Amazon S3 将对指定对象执行操作的时间。

  • Amazon S3 按以下方式计算时间:将规则中指定的天数与创建对象新后继者版本的时间相加,然后将得出的时间舍入至下一日的午夜 UTC。例如,在您的桶中,假设某个对象的当前版本的创建时间是 2014 年 1 月 1 日上午 10:30 UTC。如果替换当前版本的对象新版本的创建时间是 2014 年 1 月 15 日上午 10:30 UTC,并且您在转换规则中指定了 3 天,则对象的转换日期计算为 2014 年 1 月 19 日 00:00 UTC。

生命周期规则:基于特定日期

当在 S3 生命周期规则中指定操作时,您可以指定希望 Amazon S3 执行此操作的日期。到达特定日期时,Amazon S3 会向所有合格对象应用该操作(基于筛选条件)。

如果为 S3 生命周期操作指定一个过去的日期,所有合格对象会立即符合该生命周期操作的条件。

重要

基于日期的操作并非一次性操作。即使过了该日期后,只要规则状态为 Enabled,Amazon S3 仍会继续应用该基于日期的操作。

例如,假设您指定一个基于日期的 Expiration 操作来删除所有对象(假设规则中未指定任何筛选条件)。在指定日期,Amazon S3 会使桶中的所有对象过期。此外,S3 还会继续使你在桶中创建的所有新对象过期。要终止生命周期操作,您必须从生命周期配置中删除操作,禁用规则或从生命周期配置中删除规则。

此日期值必须符合 ISO 8601 格式。时间始终为午夜 UTC。

注意

您无法使用 Amazon S3 控制台创建基于日期的生命周期规则,但是可以查看、禁用或删除这类规则。