您可以通过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

注意事项

  • 请求费用

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

  • 不足规定时长存储费用
    • 通过生命周期将文件存储类型转换为低频或归档,且在不足规定时长前删除文件

      低频访问类型最低存储时间(30天)和归档类型最低存储时间(60天)均以文件存储在OSS的Last Modified时间开始计算。例如标准类型文件在其创建10天后,通过生命周期将其转换为低频访问类型,过了20天后将其转换为归档类型,再过5天将其删除。此时会产生25天的归档存储不足规定时长容量费用。

    • 通过生命周期将文件存储类型转换为冷归档,且在不足规定时长前删除文件

      冷归档的最低存储时间(180天)以文件转为冷归档类型的时间开始计算。例如标准类型文件在其创建10天后,通过生命周期规则转换为冷归档存储类型,再过1天将其删除。此时会产生179天的冷归档存储不足规定时长容量费用。

  • 数量

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

  • 生效时间
    生命周期规则创建后的24小时内,OSS会加载规则。规则加载完成后,OSS会在每天的北京时间8:00开始执行规则,并在随后的24小时内执行完毕。Object的最后修改时间与生命周期规则开始执行时间(8:00)必须间隔24小时以上。例如生命周期规则为Object上传1天后删除,则2020年7月20日上传的文件删除时间如下:
    • 北京时间8:00前上传的文件会在2020年7月21日8:00开始删除,并在7月22日8:00前删除完毕。
    • 北京时间8:00后上传的文件会在2020年7月22日8:00开始删除,并在7月23日8:00前删除完毕。
    注意 更新生命周期规则会中止当天的生命周期任务,请不要频繁更新生命周期规则。

组成元素

生命周期规则由以下元素组成:
  • 策略:生命周期规则匹配的Object和碎片。
    • 按前缀匹配:按指定前缀匹配Object和碎片。可创建多条规则匹配不同的前缀,前缀不能重复。前缀的命名规范与Object命名规范相同,详情请参见对象(Object)
    • 按标签匹配:按指定标签的Key和Value匹配Object。单条规则可配置多个标签,OSS对所有拥有这些标签的对象执行生命周期规则。标签匹配规则不作用于碎片。
      说明 对象标签功能详情请参见对象标签
    • 按前缀+标签匹配:按指定前缀和标签的筛选条件匹配对象。
    • 配置到整个Bucket:匹配整个Bucket内的所有Object和碎片。配置了覆盖整个Bucket的生命周期规则后,不支持再创建其他生命周期规则。
  • 文件过期策略:设置Object的过期时间及操作。
    • 过期天数:指定一个过期天数N,并指定非版本状态下的所有Object、以及版本控制状态下的当前版本Object过期后执行什么操作。Object会在其最后修改时间的N天后过期,并执行指定的操作。
    • 过期日期:指定一个过期日期,并指定非版本状态下的所有Object、以及版本控制状态下的当前版本Object过期后执行什么操作。最后修改时间在该日期之前的Object全部过期,并执行指定的操作。
    • Object成为非当前版本天数:指定一个过期天数N,并指定非当前版本Object过期后执行什么操作。Object会在其成为非当前版本的N天后过期,并执行指定的操作。

    您可以转换过期Object的存储类型或将其删除。详情请参见生命周期配置元素

  • 碎片过期策略:设置碎片的过期时间及操作。
    • 过期天数:可指定一个过期天数N,文件碎片会在其最后修改时间的N天后被删除。
    • 过期日期:指定一个过期日期,最后修改时间在该日期之前的文件碎片会被全部删除。

匹配逻辑

  • 规则生效
    例如,某个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起作用。

    对过期策略匹配的Object执行GET或HEAD操作时,OSS会在响应Header中加入x-oss-expiration头。其中expiry-date的值表示Object的过期日期;rule-id的值表示相匹配的规则ID。

  • 规则冲突
    • 相同前缀和标签

      当不同生命周期规则作用于相同前缀和标签的Object时,删除操作优先于存储类型转换操作。rule1用于指定所有前缀为abc,标签为a=1的Object 20天后删除,rule2规则不生效。

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

      rule1用于指定所有标签为a=1的Object 10天后转为IA。rule2用于指定前缀为abc且标签为a=1的Object 120天后删除。

      rule prefix tag action
      rule1 - a=1 10天后转为IA
      rule2 abc a=1 120天后被删除

      rule3用于指定所有标签为a=1的Object 20天后转为Archive。由于Archive类型文件无法转换为IA类型,因此rule4指定的前缀为abc且标签为a=1的Object 30天后转为IA的规则不生效。

      rule prefix tag action
      rule3 - a=1 20天后转为Archive
      rule4 abc a=1 30天后转为IA

常见问题

  • 通过CopyObject覆写文件存储类型时,是否有最小存储天数限制?
    有最小存储天数限制。例如低频访问类型文件在其创建10天后,通过CopyObject覆写操作将存储类型转换为归档存储,此操作会产生低频访问存储不足规定时长费用。同时文件的创建时间发生变化,且转换后的归档存储类型文件因最小存储天数为60天,因此需再保存至少60天。
  • 通过生命周期规则进行的类型转换、过期删除操作,是否有日志记录?
    所有成功通过生命周期规则进行的类型转换、过期删除操作都会有日志记录,日志记录字段如下:
    • Operation
      • CommitTransition:通过生命周期规则转换存储类型,例如转换为低频访问、归档或冷归档存储类型。
      • ExpireObject:通过生命周期规则删除过期Object。
    • Sync Request

      lifecycle:生命周期规则触发的转换存储类型和删除过期Object的操作。