生命周期配置示例
本文介绍文件生命周期的配置示例。
您可以通过OSS接口来设置Bucket中文件的生命周期。生命周期配置为XML格式,举例如下:
<LifecycleConfiguration>
<Rule>
<ID>delete logs after 10 days</ID>
<Prefix>logs/</Prefix>
<Status>Enabled</Status>
<Expiration>
<Days>10</Days>
</Expiration>
</Rule>
<Rule>
<ID>delete doc</ID>
<Prefix>doc/</Prefix>
<Status>Disabled</Status>
<Expiration>
<CreatedBeforeDate>2017-12-31T00:00:00.000Z</CreatedBeforeDate>
</Expiration>
</Rule>
<Rule>
<ID>delete xx=1</ID>
<Prefix>rule2</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。
- 第二条规则虽然指定了删除2017年12月31日之前被修改的前缀为doc/的Object,但是由于它的Status是Disabled状态,所以该规则并不会生效。
- 第三条规则会将标签为xx=1,且最后更新时间是60天前的Object存储类型修改为Archive(归档存储)。
配置生命周期涉及的各个元素定义如下:
- <ID>:每个规则唯一的标识。
- <Status>:取值为Enabled或Disabled。OSS只会应用取值为Enabled的生命周期规则。
- <Prefix>:前缀。
- <Expiration>:过期操作。子元素<CreatedBeforeDate>或<Days>指定绝对和相对过期时间。
- <CreatedBeforeDate>:设置过期时间。指定一个过期日期,并指定Object过期后执行什么操作。最后修改时间在该日期之前的Object全部过期,并执行指定的操作。
- <Days>:设置过期天数。指定一个过期天数N,并指定Object过期后执行什么操作。Object会在其最后修改时间的N天后过期,并执行指定的操作。
版本控制
对未开启、已开启或暂停版本控制的Bucket中文件生命周期的相关元素说明如下:
- Expiration:Object过期操作。
未开启版本控制的Bucket,执行Expiration过期操作会直接永久删除符合条件的Object;已开启或暂停版本控制的Bucket,执行Expiration过期操作将适用以下规则:
- Expiration元素仅作用于当前版本Object。
- 如果当前版本不为删除标记(Delete Marker):
- 在已开启版本控制状态下进行Expiration过期操作时,OSS将会插入具有唯一版本ID的删除标记作为当前版本,原当前版本将成为非当前版本。
- 在暂停版本控制状态下进行Expiration过期操作时,OSS将会插入null版本ID的删除标记作为当前版本,而原当前版本中版本ID为null的版本将被删除,以保证一个Object只有一个版本ID为null的版本。
- 如果当前版本为删除标记(Delete Marker):
- 且在该Object还有一个或多个非当前版本状态下进行Expiration过期操作,OSS将不执行任何操作。
- 且在该Object仅有一个版本状态下进行Expiration过期操作,则该删除标记即为过期删除标记,即仅剩一个删除标记版本,其余版本均已删除。OSS将根据子元素ExpiredObjectDeleteMarker决定是否移除此过期删除标记,以达到彻底清理的目的。
说明
- ExpiredObjectDeleteMarker:移除过期删除标记操作。Object当前版本经过生命周期、或主动发起的非指定版本的删除操作时,当前版本将被置为非当前版本。所有的非当前版本经过生命周期、或主动发起的指定版本的删除操作均被永久删除后,此时仅剩下唯一的删除标记作为当前版本,即过期删除标记。如果ExpiredObjectDeleteMarker设置为true,OSS将自动为您检测该过期删除标记并将其移除,以达到彻底清理的目的。
- 子元素ExpiredObjectDeleteMarker不能与标签规则同时配置。
- 如果当前版本不为删除标记(Delete Marker):
- NoncurrentVersionExpiration:非当前版本过期操作。子元素<NoncurrentDays>指相对过期时间,表示该版本从当前版本变成非当前版本开始,到永久删除之间的保留时间段。
例如该版本原本为当前版本,2019年5月1日由于putObject覆盖操作,该版本变成了非当前版本。NoncurrentVersionExpiration元素设置了<NoncurrentDays>过期时间为3天,那么该版本将在2019年5月4日被彻底删除。由于版本的连续性,每次执行上传操作时,当前版本会被置为第一个非当前版本,新添加的版本成为其后继版本。OSS会通过查看其后继版本的创建时间,来获取一个版本成为非当前版本的开始时间。说明 其他元素配置详情,请参见PutBucketLifecycle。
- Expiration元素仅作用于当前版本Object。
- <Transition>:存储类型转换。
- 子元素<CreatedBeforeDate>或<Days>指定绝对和相对转换时间。
- 子元素<StorageClass>指定Object转储的存储类型。
对于受版本控制的Bucket,<Transition>元素仅作用于Object当前版本的存储类型转换。说明 NoncurrentVersionTransition:非当前版本Object存储类型转换操作。- 子元素< NoncurrentDays>指相对转换时间,表示该版本从当前版本变成非当前版本开始,到进行存储类型转换之间的时间段。
- 子元素<StorageClass>用来指定Object转储的存储类型。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论