对象生命周期管理功能
用户可以使用生命周期管理功能来配置一条或多条规则对存储空间 (Bucket) 中的对象进行生命周期管理。每条规则定义了对存储空间中的哪些对象过多长时间执行哪种操作。操作可以分为两种类型:
-
转换存储层级(高频到低频)
用户可以使用此操作对过一段时间后访问频率变低的对象转换到低频存储层级,目前仅支持转换到 “STANDARD_IA” 低频存储层。
-
过期删除
用户可以配置此操作将资源过一段时间后自动删除。包括删除对象和取消分段上传(即删除未完成的分段上传)。
什么条件下应该使用生命周期管理对象?
用户可以对生命周期很明确的对象配置对应规则,来管理存储空间的存储, 达到节约存储成本的目的。举例来说:
- 比如国家规定留存相关网络日志不少于 6 个月,用户可以对这些日志文件定义一个规则,6 个月以后,将这些文件自动删除。
- 一般对于互联网应用,新数据过一段时间后,访问量会从高频到低频下降,数据由热变冷, 用户可以配置规则将这些对象,过一段时间以后转换到低频存储。
如何配置生命周期规则?
用户可以调用 Bucket Lifecycle API 来配置生命周期规则,也可以在控制台配置。 QingStor 生命周期配置规则(Lifecycle Rules) 作为存储空间的子资源来存储, 只有存储空间的所有者可以设置。
用 Bucket Lifecycle API 来配置生命周期规则
Bucket Lifecycle API 见 API 文档:
用控制台来配置生命周期规则
参见控制台文档
注意事项
转换到低频存储(”STANDARD_IA”)
对象在最后修改时间至少 30 天以后(包括 30 天),才能转移到低频存储。 在低频存储中的对象有最少存储时间 30 天的限制,如果在 30 天之前被修改或删除仍然以 30 天计费。
生命周期的规则有冲突情况下的结果
注解
- 生命周期规则 r1, r2 前缀 p1, p2 有重叠即前缀 p1 是 p2 的前缀 或 前缀 p2 是 p1 的前缀。
- 什么是对象相对于某个规则的生效时间? 生效时间是 开始计时时间 + 规则中的生命周期:
- 对于操作 (action) 是删除对象来说是 对象的最后修改时间 + days (配置规则中配置的生命周期)
- 对于操作(action)是转换低频存储来说是 对象的最后修改时间 + days
- 对于操作(action) 是取消分段上传来说是 分段的创建时间 + days_after_initiation
两条(或多条)生命周期规则的前缀有重叠, 此情况下有部分对象会匹配到两条(或多条)规则,对象存储平台的处理如下:
a. 如果一个对象 (object) 匹配到多条规则, 这些规则是同一操作(action),那么生效时间最早的先执行。举例:
- 一个 object 匹配到了规则 7 天以后删除 和 规则 30 天以后删除,那么这个 object 会在 7 天以后删除。
- 一个 object 匹配到了规则 30 天以后变更低频存储 和 规则 120 天以后变更低频存储,那么这个 object 会在 30 天以后变更低频存储。
b. 如果一个 object 匹配到多条规则,这些规则是不同操作(action), 除 c. 情况下,生效时间更早的先执行,生效时间晚的后执行。举例:
- 一个 object 匹配到了 30 天以后转移到低频存储,120 天以后删除,那么这个 object 会在 30 天以后转移到低频存储,120 天以后删除。
c. 限制用户输入的情况: 不允许存在删除对象规则 r1 和变更低频存储规则 r2, r1 和 r2 前缀有重叠,且 r1 生命周期 小于或等于 r2 生命周期。具体表现为:
-
当用户添加或修改变更低频存储规则时,若存在某删除对象规则前缀和其前缀有重叠,且变更低频规则生命周期大于或等于删除对象规则的生命周期,由于同时匹配到这两个规则的对象的变更低频存储规则无法执行,这时候判定用户误操作,不允许添加或修改此变更低频存储的规则, 返回 400 invalid_request 及 冲突信息。
-
当用户添加或修改删除对象的规则时,若存在某变更低频存储规则的前缀和其前缀有重叠,且删除对象规则的生命周期小于或等于变更低频存储规则的生命周期,由于同时匹配到这两个规则的对象的变更低频规则无法执行,判定用户误操作,不允许添加或修改此删除对象的规则,返回 400 invalid_request 及 冲突信息。
另外,在控制台添加或修改生命周期规则时,若存在规则和其前缀重叠,则会警告用户有重叠的规则的信息,用户可以检查对应的规则。如果确认改规则不是误操作,用户可以忽略警告点击提交。