全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

管理对象生命周期

更新时间:2017-06-07 13:26:11

OSS 提供 Object(文件)生命周期管理来为您管理Object。您可以为某个Bucket定义生命周期配置,来为该Bucket的Object定义各种规则。目前,您可以通过规则来删除相匹配的Object。每条规则都由如下几个部分组成:

  • Object名称前缀
    只有匹配该前缀的Object才适用这个规则。
  • 操作
    您希望对匹配的Object所执行的操作。
  • 日期或天数
    您期望在特定日期或者在Object最后修改时间后多少天执行指定的操作。

只要Object名称前缀和一条规则的前缀匹配,那么该规则就适用于它。例如,一个Bucket有如下几个Object:

  1. logs/program.log.1
  2. logs/program.log.2
  3. logs/program.log.3
  4. doc/readme.txt

如果一个规则指定的前缀是logs/,那么该规则就适用于前三个以logs/开头的Object;如果前缀是doc/readme.txt,那么这条规则就只对doc/readme.txt起作用。

当前,规则支持“过期删除”操作。例如,您可以设置这样的规则:当前缀为logs/的Object的最后一次更新是30天前,就删除它们;也可以指定在某年某月某日删除doc/readme.txt。

当一个Object匹配到某个过期规则时,GET和HEAD该Object时,OSS在响应Header中加入x-oss-expiration头。它包含了两个键值对:expiry-date的值表示Object的过期日期;rule-id的值表示相匹配的规则ID。

举例

您可以通过OSS开放接口来设置Bucket的生命周期配置。生命周期配置是由XML格式给出的,下面是一个具体的例子。

  1. <LifecycleConfiguration>
  2. <Rule>
  3. <ID>delete logs after 10 days</ID>
  4. <Prefix>logs/</Prefix>
  5. <Status>Enabled</Status>
  6. <Expiration>
  7. <Days>10</Days>
  8. </Expiration>
  9. </Rule>
  10. <Rule>
  11. <ID>delete doc</ID>
  12. <Prefix>doc/</Prefix>
  13. <Status>Disabled</Status>
  14. <Expiration>
  15. <CreatedBeforeDate>2014-12-31T00:00:00.000Z</CreatedBeforeDate>
  16. </Expiration>
  17. </Rule>
  18. </LifecycleConfiguration>

在这个例子中,各个元素的含义如下:

  • <ID>:每个规则唯一的标识
  • <Status>:Enabled或Disabled。OSS只会应用值为Enabled的规则。
  • <Prefix>:前缀。
  • <Expiration>:过期操作。子元素<CreatedBeforeDate><Days>指定绝对和相对过期时间。
    • 这里CreatedBeforeDate表示的含义是:将最后修改时间早于2014-12-31T00:00:00.000Z的文件删除。晚于这个时间的Object不会被删除。
    • 这里Days表示的含义是:将相对最后修改时间10天之后的Object删除。

在这个例子中,第一条规则会删除前缀为logs/的,最后更新时间是10天前的Object。第二条规则虽然指定了删除2014年12月31日之前被修改的前缀为doc/的Object,但是由于它的Status是Disabled状态,所以该规则并不会生效。

细节分析

  • 前缀的命名规范和Object一样。
  • 当前缀为空时,表明该规则适用于Bucket里的所有Object。
  • 任意两个前缀不能有重叠。例如,如果同一Bucket的两条规则,一个前缀是logs/,一个是logs/program,那么OSS会返回错误。
  • 当规则设置为在指定日期删除Object,该日期必须是UTC午夜零点,并且符合形如2014-01-01T00:00:00.000Z的ISO8601格式。OSS会在当前时间超过2014-01-01午夜零点时删除匹配的Object。
  • 当规则设定为天数时,OSS把Object最后更新时间(Last-Modified)加上天数,再取整到下一个UTC午夜零点。例如,一个Object的最后更新时间是UTC的2014年4月12日上午1点,相匹配的规则定义的天数是3天,那么过期时间就是UTC 2014年4月16日0点整。
  • OSS会在指定时间删除与规则相匹配的Object。请注意,通常Object会在指定时间稍稍延后一段时间才被删除。
  • 通常Object的最后更新时间和创建时间相差无几。当一个Object被多次Put时,最后更新时间是最后一次Put的时间;当一个Object被Copy到自身时,最后更新时间是Copy发生时的时间。

功能使用参考

本文导读目录