您可以通过OSS的PutBucketLifecycle接口设置生命周期规则(Lifecycle),定期将对象(Object)转储为低频访问、归档存储或冷归档存储类型,或将过期的Object和碎片删除,从而节省存储费用。
使用场景
- 某医疗机构的医疗档案,上传至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小时内,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的命名规范一样。
- 当前缀为空时,表明该规则适用于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。
- 前缀+标签相同
常见问题
- 通过设置生命周期转换文件类型或删除过期文件时,是否有最小存储天数限制?
- 通过生命周期转换文件类型时,没有最小存储天数限制。通过CopyObject覆写操作转换存储类型时,有最小存储天数限制。
示例1:一个低频访问类型文件,在上传10天后,通过生命周期转换为归档存储。文件的创建时间不会变化,转换后的归档存储类型文件,需再保存至少50天。示例2:一个低频访问类型文件,在创建10天后,通过CopyObject覆写,将存储类型转换为归档存储。该操作会产生存储不足规定时长容量费用,且转换后的归档存储类型文件需再保存至少60天。
- 通过生命周期删除文件时,有最小存储天数限制。
低频存储文件最少存储30天;归档存储文件最少存储60天;冷归档存储类型文件最少存储180天。若提前删除这些文件会产生存储不足规定时长容量费用,详情请参见存储费用。
- 通过生命周期转换文件类型时,没有最小存储天数限制。通过CopyObject覆写操作转换存储类型时,有最小存储天数限制。
- 通过生命周期规则进行的类型转换、过期删除操作,是否有日志记录?
所有成功通过生命周期规则进行的类型转换、过期删除操作都会有日志记录,日志记录字段如下:
- Operation
- CommitTransition:类型转换。
- ExpireObject:过期删除。
- Sync Request
lifecycle:生命周期操作。
- Operation
在文档使用中是否遇到以下问题
更多建议
匿名提交