View a markdown version of this page

PUT 存储桶生命周期(已弃用) - Amazon Simple Storage Service

PUT 存储桶生命周期(已弃用)

说明

重要

有关此 API 的已更新版本,请参阅 PutBucketLifecycleConfiguration。此版本已弃用。现有的生命周期配置将生效。对于新的生命周期配置,请使用已更新的 API。

为存储桶创建新的生命周期配置,或替换现有的生命周期配置。有关生命周期配置的信息,请参阅《Amazon Simple Storage Service 用户指南》中的对象生命周期管理

权限

默认情况下,所有 Amazon S3 资源都是私有的,包括存储桶、对象和相关子资源(例如,生命周期配置和网站配置)。只有资源拥有者和创建资源的 AWS 账户可以访问该资源。资源拥有者可以选择通过编写访问策略向他人授予访问权限。要执行此操作,用户必须获得 s3:PutLifecycleConfiguration 权限。

您也可以显式拒绝权限。显式拒绝也会取代任何其它权限。如果您想阻止用户或账户从您的存储桶中移除或删除对象,则必须拒绝他们执行以下操作的权限:

  • s3:DeleteObject

  • s3:DeleteObjectVersion

  • s3:PutLifecycleConfiguration

有关权限的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的管理对 Amazon S3 资源的访问权限

请求

语法

PUT /?lifecycle HTTP/1.1 Host: bucketname.s3.amazonaws.com Content-Length: length Date: date Authorization: authorization string Content-MD5: MD5 Lifecycle configuration in the request body

有关授权字符串的详细信息,请参阅对请求进行身份验证(AWS 签名版本 4)

请求参数

此操作的实施不使用请求参数。

请求标头

名称 描述 必填
Content-MD5

数据的 base64 编码的 128 位 MD5 摘要。您必须将此标头用作消息完整性检查,以验证请求正文在传输过程中是否未损坏。有关更多信息,请参阅 RFC 1864

类型:字符串

默认值:无

请求正文

在请求中,您可以在请求正文中指定生命周期配置。生命周期配置以 XML 形式指定。以下是一个基本生命周期配置的示例。它指定了一条规则。规则中的 Prefix 标识规则适用的对象。该规则还指定了两个操作(TransitionExpiration)。每个操作都指定了 Amazon S3 应执行该操作的时间表。Status 指示规则是已启用还是已禁用。

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>key-prefix</Prefix> <Status>rule-status</Status> <Transition>       <Date>value</Date>       <StorageClass>storage class</StorageClass>     </Transition> <Expiration> <Days>value</Days> </Expiration> </Rule> </LifecycleConfiguration>

如果存储桶的状态为已启用版本控制或已暂停版本控制,则可能有同一对象的许多版本:一个当前版本和零个或零个以上非当前版本。以下生命周期配置指定了特定于非当前对象版本的操作(NoncurrentVersionTransitionNoncurrentVersionExpiration)。

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>key-prefix</Prefix> <Status>rule-status</Status> <NoncurrentVersionTransition> <NoncurrentDays>value</NoncurrentDays> <StorageClass>storage class</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionExpiration> <NoncurrentDays>value</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

您可以使用分段上传 API 来分段上传大型对象。有关分段上传的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的分段上传概述。利用生命周期配置,如果分段上传未在指定的天数内完成,您可以指示 Amazon S3 取消未完成的分段上传(通过在规则中指定的键名称前缀确定)。当 Amazon S3 取消分段上传时,它将删除与上传关联的所有分段。这可确保您不会有未完成的分段上传(未完成的分段上传会将剩余的分段存储在 Amazon S3 中),因此您不必为它们支付存储成本。下面是使用 AbortIncompleteMultipartUpload 操作指定规则的示例生命周期配置。此操作指示 Amazon S3 在分段上传启动 7 天后取消未完成的分段上传。

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>SomeKeyPrefix/</Prefix> <Status>rule-status</Status> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>7</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration>

下表描述了生命周期配置中的 XML 元素。

名称 描述 必填
AbortIncompleteMultipartUpload

用于指定未完成的分段上传何时符合中止操作条件的容器。

子级:DaysAfterInitiation

类型:容器

原级:Rule

是,如果没有为规则指定其它操作
Date

您希望 Amazon S3 执行此操作的日期。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的生命周期规则:基于特定日期

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

类型:字符串

原级:ExpirationTransition

是,如果 DaysExpiredObjectDeleteMarker 不存在
Days

指定对象创建后特定规则操作生效的天数。

类型:与 Transition 结合使用时为非负整数,与 Expiration 结合使用时为正整数

原级:ExpirationTransition

是,如果 DateExpiredObjectDeleteMarker 不存在
DaysAfterInitiation

指定启动分段上传后必须完成分段上传的天数。如果分段上传未在指定的天数内完成,则将符合中止操作的条件,而 Amazon S3 将取消未完成的分段上传。

类型:正整数

原级:AbortIncompleteMultipartUpload

是,如果指定了父标签
Expiration

此操作指定在对象的生命周期中 Amazon S3 应采取适当过期操作的时段。Amazon S3 采取的操作取决于存储桶是否启用了版本控制。

  • 如果从未在存储桶上启用版本控制,Amazon S3 将永久删除该对象的唯一副本。

  • 如果存储桶启用了版本控制(或暂停了版本控制),则该操作仅适用于对象的当前版本。启用了版本控制的存储桶可能具有同一对象的许多版本:一个当前版本和零个或零个以上非当前版本。

    Amazon S3 不是删除当前版本,而是通过添加删除标记作为新的当前版本,使当前版本成为非当前版本。

    重要

    如果存储桶的状态为已暂停版本控制,则 Amazon S3 将创建一个版本 ID 为 null 的删除标记。如果您有一个版本 ID 为 null 的版本,Amazon S3 会覆盖该版本。

    注意

    要为非当前对象设置过期,请使用 NoncurrentVersionExpiration 操作。

类型:容器

子级:Days 或 Date

原级:Rule

是,如果 Rule 中没有其它操作。
ID

规则的唯一标识符。该值不能超过 255 个字符。

类型:字符串

原级:Rule

LifecycleConfiguration

生命周期规则的容器。您可以添加多达 1000 个规则。

类型:容器

子级:Rule

原级:无

ExpiredObjectDeleteMarker

在受版本控制的存储桶(已启用版本控制或已暂停版本控制的存储桶)上,您可以在生命周期配置中添加此元素,以指示 Amazon S3 删除过期的对象删除标记。有关示例,请参阅《Amazon Simple Storage Service 用户指南》中的示例 8:移除过期的对象删除标记。不要将其添加到不受版本控制的存储桶中,因为该类型的存储桶不能包含删除标记。

类型:字符串

有效值:true | false(支持值 false,但它是无操作的,这意味着 Amazon S3 不会执行任何操作)

原级:Expiration

是,如果 DateDays 不存在
NoncurrentDays

指定在 Amazon S3 可以执行关联操作之前,对象作为非当前对象的天数。有关非当前版本天数计算的信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 如何计算对象成为非当前版本的时间

类型:与 NoncurrentVersionTransition 结合使用时为非负整数,与 NoncurrentVersionExpiration 结合使用时为正整数

原级:NoncurrentVersionExpirationNoncurrentVersionTransition

NoncurrentVersionExpiration

指定非当前对象版本的到期时间。到期后,Amazon S3 将永久删除非当前对象版本。

在已启用(或已暂停)版本控制的存储桶上设置此生命周期配置操作,以指示 Amazon S3 在对象生命周期的特定时段删除非当前对象版本。

类型:容器

子级:NoncurrentDays

原级:Rule

是,如果 Rule 中没有其它操作
NoncurrentVersionTransition

描述非当前对象何时转换为 STANDARD_IAONEZONE_IA 或存储类别的转换规则的容器。

如果存储桶启用了版本控制(或者如果版本控制已暂停),则可以设置此操作,以指示 Amazon S3 在对象生命周期的特定时段转换非当前对象版本。

类型:容器

子级:NoncurrentDays 和 StorageClass

原级:Rule

是,如果 Rule 中没有其它操作
Prefix

标识要应用该规则的一个或多个对象的对象键前缀。

类型:字符串

原级:Rule

Rule

生命周期规则的容器。生命周期配置可以包含多达 1000 条规则。

类型:容器

原级:LifecycleConfiguration

Status

如果启用,Amazon S3 将按计划执行该规则。如果禁用,Amazon S3 将忽略该规则。

类型:字符串

原级:Rule

有效值:已启用、已禁用

StorageClass

指定要将对象转换到的 Amazon S3 存储类别。

类型:字符串

原级:Transition 和 NoncurrentVersionTransition

有效值:STANDARD_IA | ONEZONE_IA | GLACIER

仅当指定其一个或两个原级时,才需要此元素。

Transition

此操作在对象的生命周期中指定一个时段,在此时段内,Amazon S3 应将对象转换为 STANDARD_IAONEZONE_IA 或存储类别。此操作生效后,Amazon S3 的行为取决于存储桶是否启用了版本控制。

  • 如果从未在存储桶上启用版本控制,则 Amazon S3 将对象的唯一副本转换为指定的存储类别。

  • 如果您的存储桶启用了版本控制(或者暂停了版本控制),则 Amazon S3 仅转换在规则中标识的对象当前版本。

    注意

    启用版本控制的存储桶可能包含对象的许多版本。此操作对非当前对象版本没有任何效果。要转换非当前对象,必须使用 NoncurrentVersionTransition 操作。

类型:容器

子级:Days 或 Date,以及 StorageClass

原级:Rule

是,如果 Rule 中没有其它操作

响应

响应标头

此操作的实施仅使用大多数响应通用的响应标头。有关更多信息,请参阅通用响应标头

响应元素

此操作的实施不返回响应元素。

特殊错误

此操作的实施不返回特殊错误。有关 Amazon S3 错误的一般信息以及错误代码列表,请参阅错误响应

示例

示例 1:向未启用版本控制的存储桶添加生命周期配置

以下生命周期配置指定了两个规则,每个规则都有一个操作。

  • 转换操作指示 Amazon S3 在创建带“documents/”前缀的对象后 30 天将其转换为相应的存储类别。

  • 过期操作指示 Amazon S3 在创建带“logs/”前缀的对象后 365 天将其删除。

<LifecycleConfiguration> <Rule> <ID>id1</ID> <Prefix>documents/</Prefix> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> <Rule> <ID>id2</ID> <Prefix>logs/</Prefix> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>

以下是将上述生命周期配置添加到 examplebucket 存储桶的示例 PUT /?lifecycle 请求。

PUT /?lifecycle HTTP/1.1 Host: examplebucket.s3.amazonaws.com x-amz-date: Wed, 14 May 2014 02:11:21 GMT Content-MD5: q6yJDlIkcBaGGfb3QLY69A== Authorization: authorization string Content-Length: 415 <LifecycleConfiguration> <Rule> <ID>id1</ID> <Prefix>documents/</Prefix> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> <Rule> <ID>id2</ID> <Prefix>logs/</Prefix> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>

以下为示例响应。

HTTP/1.1 200 OK x-amz-id-2: r+qR7+nhXtJDDIJ0JJYcd+1j5nM/rUFiiiZ/fNbDOsd3JUE8NWMLNHXmvPfwMpdc x-amz-request-id: 9E26D08072A8EF9E Date: Wed, 14 May 2014 02:11:22 GMT Content-Length: 0 Server: AmazonS3

示例 2:向启用版本控制的存储桶添加生命周期配置

以下生命周期配置指定了两个规则,每个规则都有一个要由 Amazon S3 执行的操作。当存储桶启用了版本控制或暂停了版本控制时,您可以指定这些操作:

  • NoncurrentVersionExpiration 操作指示 Amazon S3 在带“logs/”前缀的对象变为非当前版本后的 100 天,使这些对象的非当前版本过期。

  • NoncurrentVersionTransition 操作指示 Amazon S3 在带“documents/”前缀的对象变为非当前版本后的 30 天,将这些对象的非当前版本转换为存储类别。

<LifeCycleConfiguration> <Rule> <ID>DeleteAfterBecomingNonCurrent</ID> <Prefix>logs/</Prefix> <Status>Enabled</Status> <NoncurrentVersionExpiration> <NoncurrentDays>100</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> <Rule> <ID>TransitionAfterBecomingNonCurrent</ID> <Prefix>documents/</Prefix> <Status>Enabled</Status> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>GLACIER</StorageClass> </NoncurrentVersionTransition> </Rule> </LifeCycleConfiguration>

以下是将上述生命周期配置添加到 examplebucket 存储桶的示例 PUT /?lifecycle 请求。

PUT /?lifecycle HTTP/1.1 Host: examplebucket.s3.amazonaws.com x-amz-date: Wed, 14 May 2014 02:21:48 GMT Content-MD5: 96rxH9mDqVNKkaZDddgnw== Authorization: authorization string Content-Length: 598 <LifeCycleConfiguration> <Rule> <ID>DeleteAfterBecomingNonCurrent</ID> <Prefix>logs/</Prefix> <Status>Enabled</Status> <NoncurrentVersionExpiration> <NoncurrentDays>1</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> <Rule> <ID>TransitionSoonAfterBecomingNonCurrent</ID> <Prefix>documents/</Prefix> <Status>Enabled</Status> <NoncurrentVersionTransition> <NoncurrentDays>0</NoncurrentDays> <StorageClass>GLACIER</StorageClass> </NoncurrentVersionTransition> </Rule> </LifeCycleConfiguration>

以下为示例响应。

HTTP/1.1 200 OK x-amz-id-2: aXQ+KbIrmMmoO//3bMdDTw/CnjArwje+J49Hf+j44yRb/VmbIkgIO5A+PT98Cp/6k07hf+LD2mY= x-amz-request-id: 02D7EC4C10381EB1 Date: Wed, 14 May 2014 02:21:50 GMT Content-Length: 0 Server: AmazonS3

其他示例

有关将对象转换为 STANDARD_IA 或 ONEZONE_IA 等存储类别的更多示例,请参阅生命周期配置示例