对象存储BOS

    管理生命周期

    概述

    存放在 BOS 上的文件通常会存在新建、归档、删除这样的生命周期过程。文件在新建时通常会被频繁读取访问,之后读取次数变少逐渐冷却,最终被删除。用户如果手工维护数据的生命周期,则费时费力;但如果不去维护,则数据始终存放在标准存储里会产生不菲的费用。BOS 提供生命周期管理帮助用户自动化完成数据生命周期管理,实现数据从创建到归档到删除的自动流程,从而节约人力和金钱成本。

    生命周期管理支持如下功能:

    • 自定义时间换存储类型,从标准存储转低频存储、转冷存储、转归档存储
    • 删除不再需要的数据
    • 清除过期的三步上传数据

    从场景上划分,生命周期管理支持两种模式:

    • 数据达到一定寿命后自动归档或删除。如定义所有创建时间超过30天的数据转存低频存储。
    • 指定时间执行操作。如在某个特定时刻将所有文件归档。

    操作方式

    您可以通过 Console 控制台和 API 两种方式来使用生命周期功能:

    下面重点介绍一下通过 API 管理生命周期时的规则文件语法。

    规则定义

    BOS提供的生命周期管理服务通过定义规则,并为每条规则设定动作来实现。

    注意:

    • BOS生命周期规则设置后会在一天内生效。
    • 规则生效后,BOS会对符合条件的Object进行相应的处理,但处理需要一定的时间(一般情况下为几小时),所以设置规则后不一定能马上看到效果。
    • 规则中计算的时间(即Object的“年龄”)以Object的创建时间为准,而不是生命周期规则的创建/修改时间。
    • BOS只保存文件的最后修改时间,即last-modified时间;如果用户不更新meta或者覆盖文件,那么last-modified就是创建时间。所以生命周期中的“创建时间”其实是last-modified时间。

    规则定义遵循以下原则:

    • 规则基于bucket定义;
    • 每个bucket可以有至多1000条规则项;

    以下是一个生命周期规则示例,该规则附属于名为samplebucket的bucket,包含3条规则项:

    • 2016年9月7日后删除prefix1下的所有文件;
    • 自动将prefix2下创建超过30天的文件转入低频存储;
    • 自动清除prefix3下超过5天未完成的三步上传。

      { "rule": [ { "id": "sample-rule-delete-prefix", "status": "enabled", "resource": [ "samplebucket/prefix1/*" ], "condition": { "time": { "dateGreaterThan": "2016-09-07T00:00:00Z" } }, "action": { "name": "DeleteObject" } }, { "id": "sample-rule-transition-prefix", "status": "enabled", "resource": [ "samplebucket/prefix2/*" ], "condition": { "time": { "dateGreaterThan": "$(lastModified)+P30D" } }, "action": { "name": "Transition", "storageClass": "STANDARD_IA" } }, { "id": "sample-rule-abort-multiupload-prefix", "status": "enabled", "resource": [ "samplebucket/prefix3/*" ], "condition": { "time": { "dateGreaterThan": "$(lastModified)+P5D" } }, "action": { "name": "AbortMultipartUpload" } } ], }

    每条规则由id、status、resource、condition和action组成,详细解释参见下表。

    规则项 描述 是否必填 备注
    id 规则的标识符。 可选 同一个bucket内规则id必须唯一,不能重复。如果用户不填系统会自动帮用户生成一个。
    status 规则的状态。 必填 取值为enableddisabled,当规则处于disabled时规则不生效。
    resource 规则对哪些资源生效。 必填 举例:对samplebucket里以prefix/为前缀的Object生效:samplebucket/prefix/*;对samplebucket里所有Object生效:samplebucket/*
    condition 规则依赖的条件。 必填 目前只支持time形式。
    +time 时间限制条件。 必填 通过定义的dateGreaterThan实现。
    ++dateGreaterThan 描述时间关系。 必填 支持绝对时间date和相对时间days。绝对时间date格式为yyyy-mm-ddThh:mm:ssZ,eg. 2016-09-07T00:00:00Z。绝对时间为UTC时间, 必须以00:00:00(UTC 0点)结尾;相对时间days的描述遵循ISO8601, 支持的最小时间粒度为天,如:$(lastModified)+P7D表示的时间为object的last-modified之后7天。
    action 对resource执行的操作动作。 必填 -
    +name 执行的操作名称。 必填 取值为TransitionDeleteObjectAbortMultipartUpload
    +storageClass Object的存储类型 可选 action为Transition时可以设定,取值为STANDARD_IA,表示从标准类型转为低频存储类型, 取值为COLD,表示从标准类型转为冷存储类型,取值为ARCHIVE表示从标准类型转为归档存储类型。

    action

    BOS支持Transition、DeleteObject、AbortMultipartUpload三种操作,三种动作的详细解释如下:

    操作 描述 备注
    Transition 将resource转换存储类型。 - 文件在标准存储中存储时长必须大于7天才会被转为低频存储。因为文件创建后的7天通常为频繁访问期,转换成低频可能会增加成本。文件在低频存储中保存时间大于30天才会被转为冷存储, 因为在低频存储可能还会有低频度的访问需求, 如果转换成冷存储可能会增加成本
    - 通过生命周期转成低频时,文件的last-modified不会更改。
    DeleteObject 将resource删除。 根据设定的规则删除resource。低频存储有30天的最低保存时间,所以用户如果创建规则去删除一个存储时长不到30天的低频文件,会产生额外花费。
    AbortMultipartUpload 清除一段时间内还没有完成的三步上传。 需要设置放弃分块上传的时间days。

    dateGreaterThan

    BOS支持绝对时间date和相对时间days两种形式的dateGreaterThan设置,注意事项如下:

    dateGreaterThan项 描述 支持动作 备注
    days 数据达到lastModified+days后执行操作。 支持transition、expiration、abortMultipartUpload三种操作。
    - 使用days进行生命周期管理的文件,其操作执行时间是:文件的Last-modified加上days,再取整到下一个UTC午夜零点。例如,一个Object的最后更新时间是UTC的2014年4月12日上午1点,相匹配的规则定义的天数是3天,执行操作的时间是UTC 2014年4月16日0点整。
    - 如果之后文件的last-modified发生修改,如meta更新、数据overwrite,那么操作的执行时间也会随之变化。
    date 在指定日期执行操作。 支持transition和expiration两种操作。
    - 如果指定date,date必须是UTC午夜零点,并且符合形如2014-01-01T00:00:00.000Z的ISO8601格式。
    - date规则只会对Last-modified时间早于或等于date的文件生效。
    - date规则会在当前时间>=date执行。
    - 当date和“标准存储存够7天”冲突时,优先“标准存储存够7天”。

    说明:

    • 每条规则里只能包含一个action。
    • 每个resource每种action最多只能有一条规则,例如bucket/prefix1/*不能有两条transition规则,但可以有一条transition规则加一条expiration规则。
    • 规则中如果以prefix定义的作用范围有包含关系,对于被包含的prefix以最小的作用范围定义的动作为准。如规则1定义prefix是 p1/p1/ 的Object 10天后delete,规则2定义prefix是 p1/p1/p1/的Object 15天后delete,规则1的prefix包含规则2的prefix,对于prefix为 p1/p1/p1/ 的Object执行15天后delete,对于p1/p1/中除了p1/p1/p1/之外的Object执行10天后delete动作。
    • 如果使用date作为Condition时,如“folder/”为prefix的文件,在30天后转低频,并于2016.8.17号删除。系统会依据规则计算出每个文件执行相应操作的时间,并对时间进行比对。如果文件同一天执行transition和expiration,则直接删除;如果文件删除时间早于转低频时间,也直接删除。
    上一篇
    删除Bucket
    下一篇
    获取Bucket地域信息