PUT 存储桶生命周期(已弃用)
说明
重要
有关此 API 的已更新版本,请参阅 PutBucketLifecycleConfiguration。此版本已弃用。现有的生命周期配置将生效。对于新的生命周期配置,请使用已更新的 API。
为存储桶创建新的生命周期配置,或替换现有的生命周期配置。有关生命周期配置的信息,请参阅《Amazon Simple Storage Service 用户指南》中的对象生命周期管理。
权限
默认情况下,所有 Amazon S3 资源都是私有的,包括存储桶、对象和相关子资源(例如,生命周期配置和网站配置)。只有资源拥有者和创建资源的 AWS 账户可以访问该资源。资源拥有者可以选择通过编写访问策略向他人授予访问权限。要执行此操作,用户必须获得 s3:PutLifecycleConfiguration 权限。
您也可以显式拒绝权限。显式拒绝也会取代任何其它权限。如果您想阻止用户或账户从您的存储桶中移除或删除对象,则必须拒绝他们执行以下操作的权限:
s3:DeleteObjects3:DeleteObjectVersions3:PutLifecycleConfiguration
有关权限的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的管理对 Amazon S3 资源的访问权限。
请求
语法
PUT /?lifecycle HTTP/1.1 Host:bucketname.s3.amazonaws.com Content-Length:lengthDate:dateAuthorization:authorization stringContent-MD5:MD5Lifecycle configuration in the request body
有关授权字符串的详细信息,请参阅对请求进行身份验证(AWS 签名版本 4)。
请求参数
此操作的实施不使用请求参数。
请求标头
| 名称 | 描述 | 必填 |
|---|---|---|
Content-MD5 |
数据的 base64 编码的 128 位 MD5 摘要。您必须将此标头用作消息完整性检查,以验证请求正文在传输过程中是否未损坏。有关更多信息,请参阅 RFC 1864 类型:字符串 默认值:无 |
是 |
请求正文
在请求中,您可以在请求正文中指定生命周期配置。生命周期配置以 XML 形式指定。以下是一个基本生命周期配置的示例。它指定了一条规则。规则中的 Prefix 标识规则适用的对象。该规则还指定了两个操作(Transition 和 Expiration)。每个操作都指定了 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>
如果存储桶的状态为已启用版本控制或已暂停版本控制,则可能有同一对象的许多版本:一个当前版本和零个或零个以上非当前版本。以下生命周期配置指定了特定于非当前对象版本的操作(NoncurrentVersionTransition、NoncurrentVersionExpiration)。
<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
|
用于指定未完成的分段上传何时符合中止操作条件的容器。 子级: 类型:容器 原级: |
是,如果没有为规则指定其它操作 |
Date
|
您希望 Amazon S3 执行此操作的日期。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的生命周期规则:基于特定日期。 此日期值必须符合 ISO 8601 格式。时间始终为午夜 UTC。 类型:字符串 原级: |
是,如果 Days 和 ExpiredObjectDeleteMarker 不存在 |
Days
|
指定对象创建后特定规则操作生效的天数。 类型:与 原级: |
是,如果 Date 和 ExpiredObjectDeleteMarker 不存在 |
DaysAfterInitiation
|
指定启动分段上传后必须完成分段上传的天数。如果分段上传未在指定的天数内完成,则将符合中止操作的条件,而 Amazon S3 将取消未完成的分段上传。 类型:正整数 原级: |
是,如果指定了父标签 |
Expiration
|
此操作指定在对象的生命周期中 Amazon S3 应采取适当过期操作的时段。Amazon S3 采取的操作取决于存储桶是否启用了版本控制。
类型:容器 子级:Days 或 Date 原级:Rule |
是,如果 Rule 中没有其它操作。 |
ID
|
规则的唯一标识符。该值不能超过 255 个字符。 类型:字符串 原级:Rule |
否 |
LifecycleConfiguration |
生命周期规则的容器。您可以添加多达 1000 个规则。 类型:容器 子级:Rule 原级:无 |
是 |
ExpiredObjectDeleteMarker |
在受版本控制的存储桶(已启用版本控制或已暂停版本控制的存储桶)上,您可以在生命周期配置中添加此元素,以指示 Amazon S3 删除过期的对象删除标记。有关示例,请参阅《Amazon Simple Storage Service 用户指南》中的示例 8:移除过期的对象删除标记。不要将其添加到不受版本控制的存储桶中,因为该类型的存储桶不能包含删除标记。 类型:字符串 有效值:true | false(支持值 原级: |
是,如果 Date 和 Days 不存在 |
NoncurrentDays |
指定在 Amazon S3 可以执行关联操作之前,对象作为非当前对象的天数。有关非当前版本天数计算的信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 如何计算对象成为非当前版本的时间。 类型:与 原级: |
是 |
NoncurrentVersionExpiration |
指定非当前对象版本的到期时间。到期后,Amazon S3 将永久删除非当前对象版本。 在已启用(或已暂停)版本控制的存储桶上设置此生命周期配置操作,以指示 Amazon S3 在对象生命周期的特定时段删除非当前对象版本。 类型:容器 子级:NoncurrentDays 原级:Rule |
是,如果 Rule 中没有其它操作 |
NoncurrentVersionTransition |
描述非当前对象何时转换为 如果存储桶启用了版本控制(或者如果版本控制已暂停),则可以设置此操作,以指示 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 应将对象转换为
类型:容器 子级: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 stringContent-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 stringContent-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 等存储类别的更多示例,请参阅生命周期配置示例。
相关资源
-
默认情况下,资源拥有者(在这种情况下为存储桶拥有者,即创建存储桶的 AWS 账户)可以执行任何操作。资源拥有者也可以向他人授予执行该操作的权限。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的以下主题: