本文介绍对象(Object)生命周期常见示例中涉及的各个配置元素。
生命周期规则XML示例
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>logs/</Prefix>
<Status>Enabled</Status>
<Filter>
<Not>
<Prefix>logs1/</Prefix>
<Tag><Key>key1</Key><Value>value1</Value></Tag>
</Not>
</Filter>
<Expiration>
<Days>10</Days>
</Expiration>
</Rule>
<Rule>
<ID>rule2</ID>
<Prefix>doc/</Prefix>
<Status>Disabled</Status>
<Expiration>
<CreatedBeforeDate>2017-12-31T00:00:00.000Z</CreatedBeforeDate>
</Expiration>
</Rule>
<Rule>
<ID>rule3</ID>
<Prefix>logs2/</Prefix>
<Tag><Key>xx</Key><Value>1</Value></Tag>
<Status>Enabled</Status>
<Transition>
<Days>60</Days>
<StorageClass>Archive</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
上述示例中有三条规则,含义如下:
第一条规则会删除前缀为
logs/
,且最后更新时间是10天前的Object。前缀为logs1/
、且标签为key1:value1
的Object不会被删除。第二条规则虽然指定了删除2017年12月31日之前被修改的前缀为
doc/
的Object,但是由于该规则的Status是Disabled状态,所以该规则并不会生效。第三条规则会将前缀为
logs2/
,标签为xx:1
,且最后更新时间是60天前的Object存储类型修改为Archive(归档存储)。
生命周期规则涉及的各项配置元素例如ID元素、操作元素等将在下文提供详细介绍。
ID元素
为存储空间配置的生命周期规则ID。最多由255个字节组成。如果未指定ID元素或者该值为空时,OSS会自动生成一个唯一ID。
Status元素
表示生命周期规则所处的状态。您可以选择启用(Enabled)或禁用(Disabled)生命周期规则。如果规则处于禁用状态,则OSS不会执行规则中定义的任何操作。
Prefix元素
基于您指定的<Prefix>
元素,将生命周期规则应用于存储空间中的所有或部分Object。
Filter元素
Filter元素是生命周期规则的过滤条件,仅当符合Filter下所有条件的Object才会被视为匹配该规则。
Not元素
如果您希望按照生命周期规则对与前缀和标签匹配的Object进行相应处理的同时,跳过不需要处理的Object,您可以通过Not元素对不需要处理的Object指定前缀和标签。
如果为Bucket配置了多条生命周期规则,则Not元素仅对关联的规则生效。
配置示例如下:
规则rule1中配置了前缀为
dir1
的Object在距离最后一次修改时间30天后删除。规则rule2中配置了前缀为
dir1
的Object在距离最后一次修改时间20天后转为低频访问类型,且通过Not元素指定不转换dir1/dir2/
下Object的存储类型。
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>dir1/</Prefix>
<Status>Enabled</Status>
<Expiration>
<Days>30</Days>
</Expiration>
</Rule>
<Rule>
<ID>rule2</ID>
<Prefix>dir1/</Prefix>
<Status>Disabled</Status>
<Filter>
<Not>
<Prefix>dir1/dir2/</Prefix>
</Not>
</Filter>
<Transition>
<Days>20</Days>
<StorageClass>IA</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
Not元素仅对rule2有效,即前缀为dir1的Object仍然执行rule1,并在距离最后一次修改时间30天后删除。
更多信息,请参见规则说明。
时间元素
按指定日期
使用子元素
<CreatedBeforeDate>
指定具体的日期,按照最后修改时间对在该日期之前的Object执行过期(Expiration)或转换(Transition)存储类型操作。按指定天数
使用子元素
<Days>
指定相对天数,并对指定Object在其最后修改时间的N天后执行过期或转换存储类型操作。
操作元素
通过在生命周期规则中指定的一个或多个操作元素,您可以指示OSS在Object的生命周期内执行特定操作。这些操作的效果取决于存储空间的版本控制状态。以下总结了Object执行的生命周期配置规则操作的行为与包含Object的存储空间的版本控制状态的关系。
未开启版本控制的Bucket
操作
说明
Transition
达到Object生命周期中指定的日期或时间段时,将Object转换为指定存储类型(StorageClass)。关于生命周期支持转换的存储类型的更多信息,请参见通过生命周期规则自动转换Object的存储类型。
Expiration
达到Object生命周期中指定的日期或时间段时,永久删除符合条件的Object。
受版本控制的Bucket
对受版本控制(即已开启或暂停版本控制)的Bucket中Object生命周期的相关元素说明如下:
当前版本Object过期或转换操作
操作
说明
Expiration
根据当前版本Object是否为删除标记,其过期行为说明如下:
当前版本Object不为删除标记:
在开启版本控制状态下,OSS将插入具有唯一版本ID的删除标记作为当前版本,原当前版本将成为非当前版本。
在暂停版本控制状态下,OSS将插入null版本ID的删除标记作为当前版本,而原当前版本中版本ID为null的版本将被覆盖,以保证一个Object只有一个版本ID为null的版本。
当前版本Object为删除标记:
且在该Object还有一个或多个非当前版本状态下进行Expiration过期操作,OSS将不执行任何操作。
且在该Object仅有一个版本的状态下进行Expiration过期操作或者将Expiration规则的子元素ExpiredObjectDeleteMarker的值设置为true,OSS都将自动移除该删除标记。
重要对于Object的当前版本,通过配置生命周期规则进行删除或主动发起非指定版本的删除操作时,当前版本将被置为非当前版本。对于Object的所有非当前版本,通过配置生命周期规则进行删除或主动发起指定版本的删除操作后,所有非当前版本均被永久删除,此时仅剩下唯一的删除标记作为当前版本,即过期删除标记。
子元素ExpiredObjectDeleteMarker不能与标签规则同时配置。
Transition
达到生命周期中指定的日期或时间段时,将当前版本Object转换为指定存储类型。
非当前版本Object过期或转换操作
操作
说明
关联的子元素
NoncurrentVersionExpiration
非当前版本过期操作。
子元素
<NoncurrentDays>
指相对过期时间,表示该版本从当前版本变成非当前版本开始到永久删除之间的保留时间段。说明例如该版本原本为当前版本,在2019年05月01日由于PutObject覆盖操作,该版本变成了非当前版本。如果NoncurrentVersionExpiration元素中设置了
<NoncurrentDays>
过期时间为3天,则该版本将在2019年05月04日被彻底删除。由于版本的连续性,每次执行上传操作时,当前版本会被置为第一个非当前版本,新添加的版本成为其后继版本。OSS会通过查看其后继版本的创建时间来获取一个版本成为非当前版本的开始时间。NoncurrentVersionTransition
非当前版本Object存储类型转换操作。
子元素
< NoncurrentDays>
指相对转换时间,表示该版本从当前版本变成非当前版本开始到进行存储类型转换之间的时间段。子元素
<StorageClass>
用来指定Object转储的存储类型。