您可以通过OSS的PutBucketLifecycle接口设置生命周期规则(Lifecycle),自动删除过期的对象(Object)和碎片或将到期的Object转储为低频或归档存储类型,从而节省存储费用。

说明 设置生命周期的API详细信息可参考PutBucketLifecycle

使用场景

生命周期规则可以定期将非热门数据转换为低频访问或归档存储,将不再需要访问的数据删除,让您更高效地管理您存储的数据,节省大量人力及存储成本。例如:
  • 某医疗机构的医疗档案,上传至OSS后半年内需要偶尔访问,半年后基本不再访问。可以通过设置生命周期规则,将已上传180天的医疗档案转为归档存储。
  • 某公司服务热线的录音文件,上传至OSS后2个月内,需要作为数据统计及核查的依据,2个月后偶尔访问,半年后基本不再访问,2年后数据不再需要存储。可以通过设置生命周期规则,设置录音文件上传60天后转为低频访问存储,180天后转为归档存储,730天后删除。
  • 某存储空间内有大量文件需要全部删除,但是手动删除每次仅可以删除最多1000个文件,比较麻烦。此时可以配置一条匹配整个Bucket的生命周期规则,设置一天后删除所有文件。此Bucket内的数据会在第二天被全部删除。

操作方式

操作方式 说明
控制台 Web应用程序,直观易用
命令行工具 命令行工具,性能好
Java SDK 丰富、完整的各类语言 SDK demo
Python SDK
PHP SDK
Go SDK
C SDK
.NET SDK
Node.js SDK
Ruby SDK

注意事项

  • 费用

    成功的生命周期异步请求操作会记录在访问日志中并产生相关的请求次数费用,失败的操作不会被记录和收费。

  • 可配数量

    每个存储空间最多可配置1000条生命周期规则。

  • 生效时间

    生命周期规则配置完成后24小时内会被加载,在加载24小时内会被执行。

  • 前缀、标签
    • 前缀的命名规范和Object的命名规范一样。
    • 当前缀为空时,表明该规则适用于Bucket里的所有Object。
    • 任意两个前缀不能有重叠。例如同一Bucket配置了两条规则:一条前缀是logs/;一条前缀是logs/program,那么OSS会返回错误。
    • 标签允许字符包括大小写字母、数字、空格和符号(+‑=._:/),且Key不可为空。
    • 前缀+标签规则可以有前缀重叠。例如同一Bucket配置了两条规则:规则1前缀是logs/, 标签是K1=V1;规则2前缀是logs/program,标签是K1=V2。OSS会对logs/program前缀下标签为K1=V1的对象执行规则1,标签为K1=V2的对象执行规则2,logs/前缀下对象标签为K1=V1的对象执行规则1。

生命周期规则包含信息

生命周期规则包含如下信息:
  • 策略:生命周期规则匹配的Object和碎片。
    • 按前缀匹配:按指定前缀匹配Object和碎片。可创建多条规则匹配不同的前缀,前缀不能重复。
    • 按标签匹配:按指定标签的Key和Value匹配Object。单条规则可配置多个标签,OSS对所有拥有这些标签的对象执行生命周期规则。标签匹配不可以作用于碎片。
      说明 对象标签功能详情请参见对象标签
    • 按前缀+标签匹配:按指定前缀和一个或多个标签的筛选条件匹配对象。
    • 配置到整个Bucket:匹配整个Bucket内的所有Object和碎片。此种方式只能创建一条规则。
  • 文件过期策略:设置Object的过期时间及操作。
    • 过期天数:指定一个过期天数N,并指定非版本状态下的所有Object、以及版本控制状态下的当前版本Object过期后执行什么操作。Object会在其最后修改时间的N天后过期,并执行指定的操作。
    • 过期日期:指定一个过期日期,并指定非版本状态下的所有Object、以及版本控制状态下的当前版本Object过期后执行什么操作。最后修改时间在该日期之前的Object全部过期,并执行指定的操作。
    • Object成为非当前版本天数:指定一个过期天数N,并指定非当前版本Object过期后执行什么操作。Object会在其成为非当前版本的N天后过期,并执行指定的操作。
    说明 针对过期Object可执行的操作为:转换到低频访问型存储、转换到归档型存储、删除。详情请参见生命周期配置示例
  • 碎片过期策略:设置碎片的过期时间及操作。
    • 过期天数:可指定一个过期天数N,文件碎片会在其最后修改时间的的N天后被删除。
    • 过期日期:指定一个过期日期,最后修改时间在该日期之前的文件碎片会被全部删除。

生命周期规则匹配逻辑

  • 规则生效说明
    只要Object名称前缀和一条规则的前缀匹配,那么该规则就适用于它。例如,一个Bucket有如下几个Object:
    logs/program.log.1
    logs/program.log.2
    logs/program.log.3
    doc/readme.txt

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

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

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

  • 规则冲突行为
    • 前缀+标签相同
      rule prefix tag action
      rule1 abc a=1 20天后删除
      rule2 abc a=1 20天后转为Archive

      执行结果:所有前缀为abc,标签为a=1的Object会在20天被删除(优先执行删除操作)。此时,文件已不存在,所以第二条规则已经没有意义。

      rule prefix tag action
      rule1 abc a=1 365天后转为IA(低频存储)
      rule2 abc a=1 2018-03-01前转为Archive

      执行结果:前缀为abc且标签为a=1的Object如果同时满足两个规则,则转换为Archive;若仅满足其中一条,则按指定规则执行。

    • 前缀重叠+标签相同
      rule prefix tag action
      rule1 - a=1 20天后转为IA
      rule2 abc a=1 120天后被删除

      执行结果:所有标签为a=1的Object在20天后转为IA,前缀为abc且标签为a=1的Object会在120天后被删除。

      rule prefix tag action
      rule1 - a=1 10天后转为Archive
      rule2 abc a=1 20天后转为IA

      执行结果:所有标签为a=1的Object会在10天后被转为Archive,前缀为abc且标签为a=1的Object在20天后转为IA的规则失效,因为Archive的文件无法转为IA。