本文介紹對象(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(Archive Storage)。
生命週期規則涉及的各項配置元素例如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轉儲的儲存類型。