生命周期管理是指通过配置指定的规则,实现定时删除桶中的对象或者定时转换对象的存储类别。
对于上述场景中的对象,您可以定义用于识别这些对象的生命周期管理规则,通过这些规则实现对象的生命周期管理。
自动将某些不再频繁访问的对象转换为低频访问存储或者归档存储,可以减少您的租赁费用。此处的“转换”表示在不复制原对象的情况下修改对象的存储类别。您可以在对象页面手动修改对象的存储类别,详情请参见上传对象的相关操作,也可以通过配置生命周期规则转换对象的存储类别。
您可以向不受版本控制的桶和启用了版本控制的桶添加生命周期配置。默认情况下,桶不受版本控制,您可以选择启用版本控制。启用了版本控制的桶会维护一个当前对象版本,以及零个或零个以上非当前对象版本。您可以结合使用版本控制和生命周期规则来帮助管理对象的存储成本。通过使用预定义的生命周期配置操作,可以管理当前和非当前对象版本的生命周期。
对象存储类别转换限制:
对象过期删除:
OBS提供Expiration操作,您可在生命周期配置中指定该操作以使对象过期。此外,对于启用了版本控制的桶,OBS还提供NoncurrentVersionExpiration操作,用于使非当前版本的对象过期。
如果桶不受版本控制,则Expiration操作会使OBS永久删除对象。
如果桶启用了版本控制(或版本控制已暂停),则Expiration操作会通过将删除标记添加为新的当前版本,在逻辑上删除当前版本。NoncurrentVersionExpiration操作永久删除非当前版本。
除OBS桶可以设置生存期外,上传对象时也可以设置生存期。对象的生存期优先于桶的生存期。
在对象的生存期结束后,OBS会将该对象加入删除队列并异步删除它。过期日期和OBS删除对象的日期之间可能会有一段滞后。对象过期后,不会再向您收取相关的存储时间费用。
要找出对象计划过期的时间,您可以使用GET对象或HEAD对象API。这些API将返回可提供对象过期信息的响应标头。
生命周期规则通常包含两个关键要素:
例:同时设置“转换为低频访问存储”和“过期删除”,不设置“转换为归档存储”。假设转换为低频访问存储设置为23天,则过期删除时间至少需要设置为24天。
低频访问存储的最低存储时间为30天,归档存储的最低存储时间为90天。若对象在生命周期管理规则作用下,存储时间少于最低存储时间,需要补足剩余天数的存储费用,请您根据业务情况合理设置时间。
例:上传标准存储的对象后,不进行任何更新。生命周期管理规则的策略为配置到整个桶,3天转换为低频访问存储,4天转换为归档存储,7天过期删除。那么OBS服务将收取3天的标准存储费用,30天低频访问存储费用和90天的归档存储费用。
您可将生命周期配置指定为XML。该配置包含一个或多个生命周期规则。
每个规则由以下内容组成:
以下是两个配置示例:
例1:不受版本控制的桶的生命周期配置
默认情况下,您的桶不受版本控制。即桶中的每个对象只有一个版本。
假设您的桶未启用版本控制,且希望在创建30天后将对象名前缀为“documents/”的对象转为低频访问存储对象,创建60天后转为归档存储对象,创建1年之后永久删除。为此,您可以向桶附加以下生命周期配置。该生命周期配置定义的规则包含两个操作(Transition和Expiration),该规则应用于键前缀为“documents”(在Prefix元素中指定)的对象。
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>documents/</Prefix> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> <Transition> <Days>30</Days> <StorageClass>WARM</StorageClass> </Transition> <Transition> <Days>60</Days> <StorageClass>COLD</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
例2:启用了版本控制的桶的生命周期配置
您可以选择在桶上启用版本控制。如果您的桶启用了版本控制,则您有一个当前对象版本,以及零个或零个以上非当前版本。详情请参见多版本控制。通过对象版本控制,您可以维护对象版本的历史记录,而通过生命周期,您可以控制各版本存在的时间长度,或是各版本在转换为低频访问存储或归档存储类别以进行长期存档之前保持活动状态的时间长度。
对于启用了版本控制的桶,生命周期配置提供了更多预定义操作,可用于管理非当前对象版本。示例中,该生命周期配置有一个规则,它对键前缀为“logs/”的对象指定两个操作(NoncurrentVersionTransition和NoncurrentVersionExpiration)。NoncurrentVersionTransition操作在对象成为非当前版本30天之后,请求OBS将对象转换为低频访问存储类别,成为非当前版本60天后请求OBS转换为归档存储类别;NoncurrentVersionExpiration操作在对象成为非当前版本180天之后请求OBS永久删除对象。
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>logs/</Prefix> <Status>Enabled</Status> <NoncurrentVersionExpiration> <NoncurrentDays>180</NoncurrentDays> </NoncurrentVersionExpiration> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>WARM</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionTransition> <NoncurrentDays>60</NoncurrentDays> <StorageClass>COLD</StorageClass> </NoncurrentVersionTransition> </Rule> </LifecycleConfiguration>
您可以使用预定义NoncurrentVersionTransition和NoncurrentVersionExpiration操作管理桶中的非当前版本。
一般而言,每个生命周期配置规则都由以下内容组成:
生命周期配置规则中元素介绍如下:
一个生命周期配置最多可以有1000个规则。每个ID元素对应一个规则。
Status元素值可以是Enabled或Disabled。如果规则处于禁用状态,则OBS不会执行在规则中定义的任何操作。
生命周期配置规则可应用于键名称以规则指定的前缀开头的单个对象或多个对象。例如,假设您拥有以下对象:
通过在生命周期配置规则中指定预定义操作,您可以请求OBS在对象的生命周期中执行特定操作。预定义操作包括:Transition、Expiration、NoncurrentVersionTransition和NoncurrentVersionExpiration。这些操作的效果取决于桶的版本控制状态。
默认情况下,桶不受版本控制。您可以选择在桶上启用版本控制,在这种情况下,对象有一个当前版本和零个或零个以上非当前版本。您还可以临时暂停版本控制。详情请参见多版本控制。
通过将对象的存储类别更改为低频访问存储或归档存储来存档对象。达到对象生命周期中指定的日期或时间段时,OBS将适用的对象转换为低频访问存储或归档存储对象。
此操作可以使规则适用的对象过期。OBS使所有过期的对象不可用。是否永久删除对象取决于桶的版本控制状态。
Expiration操作不会删除未合并的多段对象。
在不指定版本ID的情况下,对当前版本带删除标记的对象执行GET请求,则OBS将判断为对象已删除,返回404 Object Not Found错误。但是,您可以通过在GET请求中指定版本ID来恢复删除的对象。
例如,您可以设置一个规则,使名为photo.gif的对象创建五天之后过期。如果photo.gif在2016年1月1日上午10:30 UTC创建,则过期规则会在2016年1月7日00:00 UTC(对象创建五天之后)后的某个时间点执行,该时间点不会晚于2016年1月7日23:59 UTC。对于不受版本控制的桶,删除操作会将photo.gif永久删除;而对于启用了版本控制的桶,在过期规则执行之后,photo.gif(版本 111111)仍处于存储状态,可以在需要时进行访问,但是对象的当前版本(版本 4857693)现在带删除标记。原始photo.gif成为非当前版本。有关删除标记工作原理的信息,请参见多版本控制。
已暂停版本控制的桶:桶已暂停版本控制时,过期会导致使用null版本ID创建删除标记。任何现有null版本都会由新的null版本覆盖,与该版本关联的数据无法恢复。
特定于启用版本控制(或已暂停版本控制)的桶的操作
通过Transition和Expiration生命周期操作可以管理对象当前版本的生命周期。通过NoncurrentVersionTransition和NonCurrentVersionExpiration操作可以管理对象非当前(以前)版本的生命周期。
仅当桶是启用版本控制(或已暂停版本控制)的桶时,以下生命周期配置操作才适用。启用版本控制的桶可以有一个对象的许多版本,也就是一个当前版本和零个或零个以上非当前版本。您可以使用这些操作请求OBS对非当前对象版本执行特定操作。这些操作不会影响对象的当前版本。
NoncurrentVersionTransition操作–您可以使用此操作指定非当前版本在转换为WARM或COLD存储类型之前保留为STANDARD存储类型的时间长度。
NoncurrentVersionExpiration操作–您可以使用此操作指定在OBS永久删除非当前对象版本之前保留它们的时间长度。删除的对象无法恢复。
例如,如果您要启用一个为期五天的时段以更正任何意外删除或覆盖,您可以配置一个过期规则,用于在对象成为非当前版本五天之后删除非当前版本的对象。
在2016年1月1日上午10:30 UTC,您创建一个名为photo.gif(版本ID 111111)的对象。在2016年1月2日上午10:30 UTC,您意外删除了photo.gif(版本ID 111111),这会使用新版本ID(如版本ID 4857693)创建一个删除标记。您现在有五天时间可以在永久删除之前,恢复原始版本的photo.gif(版本ID 111111)。
在2016年1月8日00:00 UTC,过期生命周期规则执行并永久删除photo.gif(版本ID111111)(在它成为非当前版本五天之后)。
OBS如何计算对象已成为非当前版本的时间长度
在启用版本控制的桶中,您可以有一个对象的多个版本,始终有一个当前版本和零个或零个以上非当前版本。每次上传对象时,当前版本都变为非当前版本,新上传的版本(后续者)成为当前版本。为了确定对象成为非当前版本的天数,OBS会查看新上传版本的创建时间。OBS使用新上传版本创建以来的天数作为对象成为非当前版本的天数。
在使用生命周期配置时还原对象的非当前版本
您可以通过以下两种方式还原对象的非当前版本:
推荐您使用第一种方法,即将对象的非当前版本复制到相同桶中。由于OBS的最终一致性语义,在更改传播之前,永久删除的当前版本可能不会消失(OBS可能不知道此删除操作)。同时,在您配置了使非当前对象过期的生命周期之后,可能会永久删除非当前对象,包括您要还原的对象。因此,复制非当前版本的方法更加安全。
表1列出了对对象执行的生命周期配置规则操作与桶多版本控制状态的关系。
操作 |
不受版本控制的桶 |
启用多版本控制的桶 |
已暂停多版本控制的桶 |
---|---|---|---|
Transition 达到对象生命周期中指定的日期或时间段时 |
Transition转换对象,可以转换为WARM或COLD存储类别。 |
如果当前版本不带删除标记且是最新版本,则满足迁移时间可以迁移为WARM或COLD存储类别。 |
行为与启用了版本控制的桶相同。 |
Expiration 达到对象生命周期中指定的日期或时间段时 |
Expiration删除对象,删除的对象无法恢复。 |
如果当前版本不带删除标记,则生命周期创建删除标记(这会成为当前版本),现有当前版本保留为非当前版本。 |
生命周期使用版本ID创建删除标记,这会成为当前版本。如果对象当前版本的版本ID是null,则Expiration操作永久删除此版本。否则,当前版本保留为非当前版本。 |
NoncurrentVersionTransition 对象成为非当前版本之后达到指定天数时 |
NoncurrentVersionTransition无效。 |
如果当前版本不带删除标记且不是最新版本,则满足转换时间可以转换为WARM或COLD存储类别。 |
行为与启用了版本控制的桶相同。 |
NoncurrentVersionExpiration 对象成为非当前版本之后达到指定天数时 |
NoncurrentVersionExpiration无效。 |
NoncurrentVersionExpiration操作删除对象的非当前版本,删除的对象无法恢复。 |
行为与启用了版本控制的桶相同。 |
基于特定日期的生命周期规则
使用Transition和Expiration操作时,您可以指定执行操作的日期(该日期必须符合ISO8601格式,时间始终为UTC午夜0点)。如果指定一个过去的日期,所有适用对象会立即执行操作。
不支持使用OBS控制台创建基于日期的生命周期规则。
基于日期的操作并非一次性操作。即使过了该日期后,只要规则状态为“已启用”,OBS仍会继续应用该基于日期的操作。
例如,假设您指定一个基于日期的过期操作来删除所有对象(假设规则中未指定任何筛选条件)。在指定日期,OBS会使存储桶中的所有对象过期。此外,OBS还会继续使你在存储桶中创建的所有新对象过期。要终止生命周期操作,您必须从生命周期配置中删除操作、禁用规则或从生命周期配置中删除规则。
基于对象期限的生命周期规则
使用Transition和Expiration操作时,您可以指定执行操作的时间段(自对象创建以来的天数)。指定天数后,OBS从第二天的UTC午夜0点开始计算时间。例如,如果对象的创建时间是2016年1月15日上午10:30 UTC,并且您在转换规则中指定了3天,则对象的转换日期将计算为2016年1月19日00:00 UTC。
OBS仅为每个对象保持上次修改日期。例如,OBS控制台在对象Properties(属性)窗格中显示LastModified(上次修改日期)日期。最初创建新对象时,此日期反映对象的创建日期。如果您替换对象,则此日期会相应地更改。
使用NoncurrentVersionTransition和NoncurrentVersionExpiration操作时,您可将对象版本成为非当前版本之后(即自对象覆盖或删除以来)的天数指定为对指定对象执行操作的时间段。
使用NoncurrentVersionTransition和NoncurrentVersionExpiration操作指定天数时,OBS将规则中指定的天数与对象版本成为非当前版本的时间相加,按照得到的时间从第二天的UTC午夜0点开始计算时间。例如,桶中某个对象当前版本的创建时间是2016年1月1日上午10:30 UTC,如果对象版本在2016年1月15日上午10:30 UTC成为非当前版本,并且您在转换规则中指定了3天,那么对象的转换日期计算为2016年1月19日00:00 UTC。
配置生命周期规则时,在同一个规则内或前缀包含关系的规则间,如果配置Transition和Expiration,那么Date或Days应保持一致。
本文转载自微信公众号「Redis开发运维实战」,作者付磊。转载本文请联系Redis开...
作者 | 常意 来源 | 阿里技术公众号 温馨提示:本文较长,同学们可收藏后再看 :)...
往期分享RDS MySQL RDS MySQL 实例空间问题 RDS MySQL 内存使用问题 RDS MySQL ...
号外号外!河南省第六届互联网大会即将开启,报名通道已经开通,倒计时 7天,洞...
什么是整机镜像? 整机镜像是包含云服务器操作系统、应用软件和业务数据的镜像。...
背景: CDN节点缓存策略: 可根据实际业务场景设置合理的缓存策略,比如遵循源站...
简介 广播描述的是NumPy如何计算不同形状的数组之间的运算。如果是较大的矩阵和...
作者 | 门柳 来源 | 阿里技术公众号 去年成为了内网技术分享平台的年度作者,受...
1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童...
618有什么便宜的 云服务器 推荐?当然是有的。小编比较了腾讯云,华为云, TOP云...