文档简介:
PUT Bucket Lifecycle
此操作用来设置Bucket生命周期规则。只有根用户和具有PUT Bucket Lifecycle权限的子用户才能执行此操作。
生命周期是指对象从更新开始到被删除/转换存储类型的时间。
通过设置存储桶的生命周期规则,可以:
-
删除与生命周期规则匹配的对象。当对象的生命周期到期时,OOS会异步删除它们。生命周期中配置的到期时间和实际删除时间之间可能会有一段延迟。但对象到期被删除后,用户将不需要为到期的对象付费。OOS删除到期对象后,会在Bucket log中记录一条日志,操作项是"OOS.EXPIRE.OBJECT"。
注意:如果对象的生命周期规则设置的是到期后删除,对象到期后将被永久删除,无法恢复。
-
将与生命周期规则匹配的对象由标准存储转换为低频访问存储。OOS转换存储类型为低频访问存储后,会在access logs中记录一条日志,操作项是"OOS.TRANSITION_SIA.OBJECT"。
注意:
-
如果Bucket没有配置过生命周期规则,执行该操作将创建新的生命周期规则;如果Bucket已存在相同名称的生命周期规则,则执行此操作将覆盖原有规则。
-
每个Bucket最多创建100条生命周期规则。
-
同一Bucket,同一类型(到期删除或者到期转成低频访问存储)的生命周期规则不能存在叠加前缀,例如已创建到期删除对象的生命周期规则的前缀是ABC,则无法再创建前缀为ABCD或AB或A的到期删除对象的生命周期规则。
-
当用户为Bucket设置了生命周期规则,这些规则将同时应用于已有对象和后续新创建的对象。例如,用户今天增加了一个生命周期,指定某些前缀的对象30天后过期,那么OOS将会将满足条件的30天前创建的对象都加入到待删除队列中。
OOS通过将对象的创建时间加上生命周期时间来计算到期时间,并且将时间近似到下一天的GMT零点时间。例如,一个对象于GMT 2016年1月15日10:30创建,生命周期为3天,那么对象的到期时间是GMT 2016年1月19日00:00。当重写一个对象时,OOS将以最后更新时间为准,来重新计算该对象的到期时间。
可以通过GET Object、HEAD Object查询对象的到期时间。
请求语法
PUT /?lifecycle HTTP/1.1 Host: BucketName.oos-cn.ctyunapi.cn Date: date Authorization: signatureValue Content-MD5: MD5
<LifecycleConfiguration> <Rule> <ID>UniqueIdentifier</ID> <Prefix>Prefix</Prefix> <Status>LifecycleStatus</Status> <Expiration> <Days>NumberOfDays</Days> </Expiration> </Rule> </LifecycleConfiguration> |
请求头
名称 |
描述 |
是否必需 |
Content-MD5 |
数据的base64编码的128位MD5。此请求头必填,以便校验数据的完整性。 |
是 |
请求元素
名称 |
描述 |
是否必需 |
LifecycleConfiguration |
生命周期规则容器,最多包含100个规则。 类型:容器 子节点:Rule 父节点:无 |
是 |
Rule |
配置一条生命周期规则的容器。 类型:容器 子节点:ID、Prefix、Status、Expiration、Transition 父节点:LifecycleConfiguration |
是 |
ID |
规则的唯一标识。 类型:字符串 父节点:Rule 取值:1~255个字符 |
否 |
Prefix |
指定使用生命周期规则的对象前缀。只有匹配对象前缀的对象才能被该规则影响,且对于同一Bucket,同一类型的生命周期规则的前缀不可重叠。如果prefix为空,则默认生命周期规则匹配整个存储桶。 类型:字符串 父节点:Rule 取值:0~1024个字符 |
是 |
Status |
指定生命周期规则的状态。 类型:字符串 父节点:Rule 取值: l Enabled:生命周期规则生效; l Disabled:生命周期规则不生效,OOS执行时会忽略该条规则。 |
是 |
Expiration |
指定生命周期规则的过期时间容器。 类型:容器 子节点:Days或Date 父节点:Rule |
Expiration和Transition至少包含1个 |
Transition |
指定生命周期规则的转换存储类型。 类型:容器 子节点:Days或Date、StorageClass 父节点:Rule |
Expiration和Transition至少包含一个 |
Days |
指定生命周期规则在匹配对象创建多少天后生效。 注意:如果过期时间和转换时间同时配置,过期时间需要晚于转换时间。 类型:正整数 父节点:Expiration或Transition 取值:大于0的正整数 |
Days和Date二选一 |
Date |
指定生命周期规则生效日期,OOS对在此日期之前创建的对象执行生命周期规则。在该生效时间,生成时间早于此时间的对象将被认为是过期对象。 日期格式必须为ISO8601格式,并且为UTC的零点。例如:2002-10-11T00:00:00.000Z。 类型:String 父节点:Expiration、Transition |
Days和Date二选一 |
StorageClass |
指定对象转换的存储类型。 类型:字符串 父节点:Transition 取值: STANDARD_IA:低频访问存储。 |
Transition已设置时,必选。 |
请求示例
例子1:单一规则
下面的生命周期只包含一个规则,这个规则指定所有以logs/为前缀的对象将在创建后的30天过期。因为规则的状态是Enabled,OOS会每隔一段时间来评估这个规则,删除过期的对象。
PUT /?lifecycle HTTP/1.1 Host: doc.oos-cn.ctyunapi.cn Date: Tue, 13 Dec 2011 17:54:50 GMT Content-MD5: 8dYiLewFWZyGgV2Q5FNI4W==
Authorization: AWS 7799e793ce4624ee7e5a:z6mvnXscCWad60vdmB9xZVVZn46= Content-Length: 207 <LifecycleConfiguration> <Rule> <ID>delete-logs-in-30-days-rule</ID> <Prefix>logs</Prefix> <Status>Enabled</Status> <Expiration> <Days>30</Days> </Expiration> </Rule> </LifecycleConfiguration> |
返回示例
HTTP/1.1 200OK x-amz-request-id: 32FE2CEB32F5EE25 Date: Tue, 13 Dec 2011 19:14:41 GMT Connection: close Server: CTYUN |
示例2:设置存储类型转换
指定存储对在创建10天后转换为低频访问存储,创建20天后删除。
请求示例
PUT /?lifecycle HTTP/1.1 Host: ctyuntest0625.oos-cn.ctyunapi.cn Authorization: AWS AKIAIM6KGTNKZKF4ETLA:fWuioDnZ3Cc1cXPWu8x5MEWglLg= Date: Mon, 29 Jul 2019 05:08:31 GMT Content-Type: application/xml Content-MD5: ouPJihB832ZHNLZNyl2Ccw== Content-Length: 175
<LifecycleConfiguration> <Rule> <Prefix>logs</Prefix> <Status>Enabled</Status> <Transition> <Days>10</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <Expiration> <Days>20</Days> </Expiration> </Rule> </LifecycleConfiguration> |
返回示例
HTTP/1.1 200OK x-amz-request-id: 32FE2CEB32F5EE25 Date: Mon, 29 Jul 2019 05:10:33 GMT Connection: close Server: CTYUN |
例子3:定义所有对象的规则
下面的规则指定所有对象将在创建后的3650天被删除。
注意:当指定空的前缀时,规则将对bucket内的所有对象生效。OOS将会删除满足此规则的所有对象。
PUT /?lifecycle HTTP/1.1 Host: doc.oos-cn.ctyunapi.cn Date: Tue, 13 Dec 2011 17:54:50 GMT Content-MD5: 8dYiLewFWZyGgV2Q5FNI4W== Authorization: AWS 7799e793ce4624ee7e5a:z6mvnXscCWad60vdmB9xZVVZn46= Content-Length: 226
<LifecycleConfiguration> <Rule> <ID>10 years all objects expire rule </ID> <Prefix></Prefix> <Status>Enabled</Status> <Expiration> <Days>3650</Days> </Expiration> </Rule> </LifecycleConfiguration> |
返回示例
HTTP/1.1 200OK x-amz-request-id: BDC4B83DF5096BBE Date:Tue, 13 Dec 2011 19:14:41 GMT Connection: close Server: CTYUN |
例子4:定义所有对象的生命周期规则
在设置多个规则时,请注意各规则之间不要互相冲突。比如,下面的生命周期中配置了一个规则,指定所有以documents为前缀的对象在30天后过期。而另一个规则指定所有以documents/2011为前缀的对象在365天过期。在这种情况下,OOS将返回错误信息。
PUT /?lifecycle HTTP/1.1 Host: doc.oos-cn.ctyunapi.cn Date: Tue, 13 Dec 2011 17:54:50 GMT Authorization: AWS 7799e793ce4624ee7e5a:z6mvnXscCWad60vdmB9xZVVZn46= Content-MD5: 8dYiLewFWZyGgV2Q5FNI4W== Content-Length: 226
<LifecycleConfiguration> <Rule> <ID>111</ID> <Prefix>documents</Prefix> <Status>Enabled</Status> <Expiration> <Days>30</Days> </Expiration> </Rule> <Rule> <ID>222</ID> <Prefix>documents/2011</Prefix> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration> |