Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

生命周期配置元素

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

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

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

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

  • 筛选条件,用于标识规则将应用于的对象。您可以通过使用一个对象键前缀和/或一个或多个对象标签来指定筛选条件。

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

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

ID 元素

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

Status 元素

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

Filter 元素

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

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

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

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

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

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

    有关对象键的更多信息,请参阅对象键

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

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

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

    Copy
    <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> 元素中包含所有这些内容,如下所示:

    Copy
    <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 组合这些筛选条件。即,此规则应用于具有特定键前缀和特定标签的一部分对象。请注意,一个筛选条件最多可以有一个前缀以及零个或多个标签。

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

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

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

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

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

    对于受版本控制的存储桶 (已启用版本控制或已暂停版本控制的存储桶),Transition 操作适用于当前对象版本。为了管理非当前版本,Amazon S3 定义了 NoncurrentVersionTransition 操作 (描述如下)。

  • Expiration 操作元素 - Expiration 操作使规则中识别的对象过期。Amazon S3 使所有过期的对象不可用。是否永久删除对象取决于存储桶的版本控制状态。

    重要

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

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

    • 受版本控制的存储桶 - 对于受版本控制的存储桶 (即,已启用版本控制或已暂停版本控制),有一些指导 Amazon S3 如何处理 expiration 操作的注意事项。有关更多信息,请参阅 使用版本控制。无论版本控制状态如何,以下规则都适用:

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

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

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

        重要

        Amazon S3 将在对象过期后的 48 小时内移除过期对象删除标记。

      Amazon S3 有关管理过期的其他注意事项如下所示:

      • 已启用版本控制的存储桶

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

      • 已暂停版本控制的存储桶

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

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

  • NoncurrentVersionTransition 操作元素 – 使用此操作可指定您希望在 Amazon S3 将对象转换为指定存储类别之前在当前存储类别中保留对象的时间 (从对象变为非当前时开始)。有关转换对象的更多信息,请参阅受支持的转换和相关限制

  • NoncurrentVersionExpiration 操作元素 – 使用此操作可指定您希望在 Amazon S3 永久删除非当前对象版本之前保留它们的时间 (从对象变为非当前时开始)。删除的对象无法恢复。

    当您需要更正任何意外删除或覆盖时,非当前对象的延时删除可能很有帮助。例如,您可以配置一个到期规则,以便在对象变为非当前版本五天后删除非当前版本。例如,假设在 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) (在它成为非当前版本五天之后)。

    重要

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

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

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

    注意

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

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

    注意

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

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

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

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

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

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

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

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

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

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

生命周期操作与存储桶版本控制状态

操作 不受版本控制的存储桶 (未启用版本控制) 已启用版本控制的存储桶 已暂停版本控制的存储桶

Transition

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

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

Expiration

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

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

NoncurrentVersionTransition

对象成为非当前版本之后达到指定天数时。

NoncurrentVersionTransition 无效。

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

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

NoncurrentVersionExpiration

对象成为非当前版本之后达到指定天数时。

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

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

您可以指定 Amazon 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 执行操作的日期。到达特定日期时,S3 会向所有合格对象应用该操作 (基于筛选条件)。

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

重要

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

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

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

注意

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