约束与限制
- 生命周期规则目前仅支持根据前缀和对象标签进行匹配,不支持通配符匹配、后缀匹配以及正则匹配。
- 单个桶的生命周期规则条数没有限制,但单个桶中所有生命周期规则的XML描述总大小不能超过20KB。
- 您最多可以在一个并行文件系统下配置20条生命周期管理规则,超过20条将提示不支持。
- 生命周期为覆盖语义,修改桶的生命周期规则,您需要在原有规则的基础上添加规则。例如,某个Bucket已配置了生命周期规则Rule1,您需要在Rule1基础上继续追加生命周期规则Rule2,您需要执行以下操作。
- 调用GetBucketLifecycle接口获取当前生命周期规则配置Rule1。
- 在Rule1基础上叠加Rule2。
- 调用PutBucketLifecycle接口更新生命周期规则为Rule1+Rule2。
配置生命周期规则操作步骤
OBS支持使用控制台、API、OBS SDK、OBS Browser+设置生命周期规则。
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在OBS管理控制台桶列表中,单击待操作的桶,进入“对象”页面。
- 在左侧导航栏单击“数据管理 > 生命周期规则”,进入“生命周期规则”界面。
- 单击“创建”,系统弹出如图1所示对话框。
图1 创建生命周期规则
- 配置生命周期管理规则。
基本信息:
- “状态”:选中“启用”,启用本条生命周期规则。
- “规则名称”:用于识别不同的生命周期配置,其长度需不超过255字符。
- “前缀”:可选。
- 填写前缀:满足该前缀的对象将受生命周期规则管理,输入的对象前缀不能包括\:*?"<>|特殊字符,不能以/开头,不能两个/相邻。
- 未填写前缀:桶内所有对象都将受生命周期规则管理。
- “标签”:可选。携带该标签的对象将受生命周期规则管理。删除碎片、删除过期删除标记不支持使用对象标签(Tag)作为筛选条件。
- 键名(Key)约束:当筛选条件中指定多个标签时,每个标签的Key必须唯一。最大长度为128个字符,可用UTF-8格式表示的字母(含中文)、数字、空格,以及以下字符:“_ . : = + - @”,区分大小写,不能为空。
- 键值(Value)约束:最大长度为255个字符,可用UTF-8格式表示的字母(含中文)、数字、空格,以及以下字符:“_ . : /= + - @”。区分大小写,可以为空。
当前版本或历史版本:
- “当前版本”与“历史版本”是针对“多版本控制”而言的。如果开启了“多版本控制”功能,同名的对象上传到同一路径下时,则会产生不同的版本号。最新版本的对象称之为“当前版本”,历史时间上传的对象称之为“历史版本”。当前版本和历史版本的详细介绍请参见多版本控制。
- “当前版本”与“历史版本”至少配置一个,也可以两个版本同时配置。
- 转换为低频访问存储天数:指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储。
- 转换为归档存储天数:指定在对象最后一次更新后多少天,受规则影响的对象将转换为归档存储。如果同时设置转换为低频访问存储和转换为归档存储,则转换为归档存储的时间要比转换为低频访问存储的时间长。如果单独设置转换为归档存储,则没有时间限制。
- 转换为深度归档存储天数:指定在对象最后一次更新后多少天,受规则影响的对象将转换为深度归档存储。如果同时设置转换为低频访问存储和转换为深度归档存储,则转换为深度归档存储的时间要比转换为低频访问存储的时间长。如果同时设置转换为归档存储和转换为深度归档存储,则转换为深度归档存储的时间要比转换为归档存储的时间长。如果单独设置转换为深度归档存储,则没有时间限制。
- 对象过期删除天数:指定在对象最后一次更新后多少天,受规则影响的对象将过期并自动被OBS删除。过期时间必须大于转换时间的最大值,且必须为整数。
- 碎片过期删除天数:指定桶内碎片在产生后多少天自动删除。
例如,您于2015年1月7日在
OBS中存储了以下几个文件:
- log/test1.log
- log/test2.log
- doc/example.doc
- doc/good.txt
您于2015年1月10日在
OBS中存储了以下几个文件:
- log/clientlog.log
- log/serverlog.log
- doc/work.doc
- doc/travel.txt
如果您在2015年1月10日设置前缀为“log”的对象,过期删除的时间设置为一天,可能出现如下情况:
- 1月7日上传的两个对象“log/test1.log”和“log/test2.log”,会在最近一次系统自动扫描后被删除,可能在1月10日当天,也可能在1月11日,这取决于系统的下一次扫描在何时进行。
- 1月10日上传的两个对象“log/clientlog.log”和“log/serverlog.log”,每下一次系统扫描均会判断距上一次对象更新是否已满一天。如果已满一天,则在本次扫描时删除;如果未满一天,则会等到下次扫描再判断,直到满一天时删除,一般可能在1月11日或1月12日删除。
如果您在某天设置前缀为“log”的对象,转换为低频访问存储的时间设置为30天,转换为归档存储的时间设置为60天,过期删除的时间设置为100天,OBS将会在“log/clientlog.log”、“log/serverlog.log”、“log/test1.log”和“log/test2.log”这四个对象上传满30天后转换为低频访问存储,满60天后转换为归档存储,满100天后自动删除。
对象上传后,系统会将下一个UTC零点作为对象存储的起始时间开始计算生命周期。生命周期规则执行常规情况下最长耗时24小时。因此,存储类别的转换以及过期被删除可能会存在延时,且一般不会超过48小时。配置生命周期规则后,如果期间修改了生命周期配置,会重新计算生效时间。
- 单击“确定”,完成生命周期规则配置。
使用图形化工具OBS Browser+
- 登录OBS Browser+。
- 选中待配置的桶,单击“更多 > 生命周期规则”,如图2所示。
图2 生命周期规则
- 在“生命周期规则”窗口中单击“创建”,如图3所示。
图3 创建生命周期规则
- 配置生命周期规则。
- 状态:勾选“启用”,启用本条生命周期规则。
- 规则名称:用于识别不同的生命周期配置,其长度需不超过255字符。
- 策略:可根据对象名前缀进行匹配,满足该前缀的对象将受生命周期规则管理。也可将生命周期规则配置到整个桶,则桶内所有对象都将受生命周期规则管理。
- 当按前缀配置时,如果指定的前缀名与某条已配置的生命周期规则指定的前缀名存在包含关系,OBS会将两条规则视为同一条,而禁止您配置本条规则。例如,系统中已存在指定前缀名为“abc”的规则,则不允许再配置指定前缀包含“abc”字段的规则。
- 如果已存在按前缀配置的生命周期规则,则不允许再新增配置到整个桶的规则。
- 如果已存在配置到整个桶的生命周期规则,则不允许再新增按前缀配置的规则,此时界面的“创建”按钮会变成灰色,表示不可操作。
- 您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储、归档存储或者过期并自动被OBS删除。
- 转换为低频访问存储:即您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储。
- 转换为归档存储:即您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为归档存储。
- 过期删除:可指定对象多少天后过期被自动删除,也可指定在具体某一天之后删除匹配规则的对象。
例如,您于2022年1月7日在OBS中存储了以下几个文件:
- log/test1.log
- log/test2.log
- doc/example.doc
- doc/good.txt
您又于2022年1月10日在OBS中存储了以下几个文件:
- log/clientlog.log
- log/serverlog.log
- doc/work.doc
- doc/travel.txt
在2022年1月10日设置前缀为“log/”的对象,过期时间设置为一天,OBS将会在2022年1月12日自动删除“log/clientlog.log”、“log/serverlog.log”、“log/test1.log”和“log/test2.log”这四个对象。
在今天设置前缀为“log”的对象,转换为低频访问存储的时间设置为30天,转换为归档存储的时间设置为60天,过期删除的时间设置为100天,OBS将会第31天将“log/clientlog.log”、“log/serverlog.log”、“log/test1.log”和“log/test2.log”这四个对象转换为低频访问存储,第61天后转换为归档存储,第101天后自动删除这些对象。
- 在“生命周期管理”对话框中单击“确认”,保存当前的生命周期规则。
为单个对象设置对象生命周期
如果您的使用场景需要针对单个对象设置删除时间,可以在对象上传时,为对象设置过期删除时间。如果开启了多版本,可以在上传时为每一个对象版本设置过期删除时间。对象生命周期只能作用于对象版本,不作用于删除标记和碎片。
与在桶上设置生命周期不同,对象生命周期只能作用于当前对象,且只能设置定时删除,不能设置存储类别转换。如果桶生命周期与对象生命周期冲突,则优先执行对象生命周期。
OBS支持使用API、SDK设置对象生命周期,控制台、OBS Browser+、obsutil暂不支持:
使用SDK
OBS SDK多个上传对象接口支持设置过期删除参数(expires)请求参数: