本文介紹對象(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轉儲的存儲類型。