开发者社区> 问答> 正文

关于Bucket的操作之如何实现PutBucketLifecycle?


Put Bucket Lifecycle


Bucket的拥有者可以通过Put Bucket Lifecycle来设置Bucket的Lifecycle配置。Lifecycle开启后,OSS将按照配置,定期自动删除或转储与Lifecycle规则相匹配的Object。

请求语法PUT /?lifecycle HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Authorization: SignatureValue
Host: BucketName.oss.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>RuleID</ID>
    <Prefix>Prefix</Prefix>
    <Status>Status</Status>
    <Expiration>
      <Days>Days</Days>
    </Expiration>
    <Transition>
      <Days>Days</Days>
      <StorageClass>StorageClass</StorageClass>
    </Transition>
    <AbortMultipartUpload>
      <Days>Days</Days>
    </AbortMultipartUpload>
  </Rule>
</LifecycleConfiguration>





请求元素(Request Elements)

名称描述是否必需
CreatedBeforeDate指定规则何时之前生效。日期必需服从ISO8601的格式,并且总是UTC的零点。 例如:2002-10-11T00:00:00.000Z 类型:字符串 父节点:Expiration或者Transition或者AbortMultipartUploadDays和CreatedBeforeDate二选一
Days指定规则在对象最后修改时间过后多少天生效。 类型:正整数 父节点:Expiration或者TransitionDays和CreatedBeforeDate二选一
Expiration指定Object规则的过期属性。 类型:容器 子节点:Days或CreatedBeforeDate 父节点:Rule
AbortMultipartUpload指定未完成的Part规则的过期属性。 类型:容器 子节点:Days或CreatedBeforeDate 父节点:Rule
ID规则唯一的ID。最多由255字节组成。当用户没有指定,或者该值为空时,OSS会为用户生成一个唯一值。 类型:字符串 子节点:无 父节点:Rule
LifecycleConfigurationLifecycle配置的容器,最多可容纳1000条规则。 类型:容器 子节点:Rule 父节点:无
Prefix指定规则所适用的前缀。只有匹配前缀的对象才可能被该规则所影响。不可重叠。 类型:字符串 子节点:无 父节点:Rule
Rule表述一条规则 类型:容器 子节点:ID,Prefix,Status,Expiration 父节点:LifecycleConfiguration
Status如果其值为Enabled,那么OSS会定期执行该规则;如果是Disabled,那么OSS会忽略该规则。 类型:字符串 父节点:Rule 有效值:Enabled,Disabled
StorageClass指定对象转储到OSS的目标存储类型 类型:字符串 子节点:无 父节点:Transition 有效值:IA或者Archive是,如果父节点Transition设置了
Transition指定Object在有效生命周期中,OSS何时将对象转储到IA或者Archive存储类型 类型:容器 子节点:Days或CreatedBeforeDate 父节点:Rule


细节分析

  1. 只有Bucket的拥有者才能发起Put Bucket Lifecycle请求,否则返回403 Forbidden消息。错误码:AccessDenied。
  2. 如果此前没有设置过Lifecycle,此操作会创建一个新的Lifecycle配置;否则,就覆写先前的配置。
  3. 可以对Object设置过期时间,也可以对Part设置过期时间。这里的Part指的是以分片上传方式上传,但最后未提交的分片。
  4. 支持Standard Bucket中Standard Objects转储为IA、Archive存储类型,Standard Bucket可以针对一个Object同时配置转储IA和Archive存储类型规则,同时配置转储IA和Archive类型情况下,转储Archive的时间必须比转储IA的时间长。例如Transition IA设置Days为30,Transition Archive设置Days必须大于IA。否则,报InvalidArgument错。
  5. Object设置过期时间必须大于转为IA或者Archive的时间。否则,报InvalidArgument错。
  6. 支持IA Bucket中Objects转储为Archive存储类型。
  7. 不支持Archvie Bucket创建转储规则。
  8. 不支持IA类型Object转储为Standard。
  9. 不支持Archive类型Object转储为IA或Standard。


示例


[backcolor=transparent]请求示例: PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 443
Date: Thu , 8 Jun 2017 13:08:38 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:PYbzsdWSMrAIWAlMW8luWekJ8=
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>delete objects and parts after one day</ID>
    <Prefix>logs/</Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <Days>1</Days>
    </Expiration>
    <AbortMultipartUpload>
      <Days>1</Days>
    </AbortMultipartUpload>
  </Rule>
  <Rule>
    <ID>transit objects to IA after 30, to Archive 60, expire after 10 years</ID>
    <Prefix>data/</Prefix>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
    </Transition>
    <Transition>
      <Days>60</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
    <Expiration>
      <Days>3600</Days>
    </Expiration>
  </Rule>
  <Rule>
    <ID>transit objects to Archive after 60 days</ID>
    <Prefix>important/</Prefix>
    <Status>Enabled</Status>
    <Transition>
      <Days>6</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
  </Rule>
  <Rule>
    <ID>delete created before date</ID>
    <Prefix>backup/</Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <CreatedBeforeDate>2017-01-01T00:00:00.000Z</CreatedBeforeDate>
    </Expiration>
    <AbortMultipartUpload>
      <CreatedBeforeDate>2017-01-01T00:00:00.000Z</CreatedBeforeDate>
    </AbortMultipartUpload>
  </Rule>
</LifecycleConfiguration>


[backcolor=transparent]返回示例: HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Thu , 8 Jun 2017 13:08:38 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS

展开
收起
青衫无名 2017-10-20 10:41:02 1974 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
HBase2.0重新定义小对象实时存取 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多