本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
生命週期組態元素
您可以將 Amazon S3 生命週期組態指定為 XML,包含一或多個生命週期規則。
<LifecycleConfiguration> <Rule> ... </Rule> <Rule> ... </Rule> </LifecycleConfiguration>
每項規則皆包含下列各項:
-
包含規則識別碼的規則中繼資料,以及指出規則是啟用或停用的狀態。當規則停用時,Amazon S3 不會執行規則中指定的任何動作。
-
可識別套用規則之物件的篩選器。您可以使用物件大小、物件 key prefix、一或多個物件標籤或篩選組合來指定濾鏡。
-
當您想要 Amazon S3 執行指定的動作時,物件的生命週期中必須包含具有日期或時段的一或多個轉換或過期動作。
下列各節描述 S3 生命週期組態中的 XML 元素。如需組態範例,請參閱 S3 生命週期組態範例。
ID 元素
S3 生命週期組態最多可有 1,000 項規則。此限制不可調整。元<ID>
素可唯一識別規則。ID 長度不得超過 255 個字元。
Status 元素
元<Status>
素值可以是Enabled
或Disabled
。當規則停用時,Amazon S3 不會執行規則中定義的任何動作。
Filter 元素
根據您在生命週期規則中指定的<Filter>
元素,生命週期規則可以套用至值區中的所有物件或子集。
您可以依金鑰字首 (key prefix)、物件標籤或兩者的組合來篩選物件 (在此情況下,Amazon S3 會使用邏輯 AND
來合併篩選條件)。請考量下列範例:
-
使用金鑰前置詞指定篩選器 — 此範例顯示 S3 生命週期規則,該規則會根據金鑰名稱前置詞 (
logs/
) 套用至物件子集。例如,生命週期規則適用於logs/mylog.txt
logs/temp1.txt
、和的物件logs/test.txt
。此規則不會套用到物件example.jpg
。<LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter>
transition/expiration actions
... </Rule> ... </LifecycleConfiguration>如果您要根據不同的索引鍵名稱首碼,將生命週期動作套用至物件子集,請指定個別的規則。請在每項規則中,指定使用字首的篩選條件。例如,若要描述具有索引鍵前置詞
projectA/
之物件的生命週期動作projectB/
,您可以指定兩個規則,如下所示:<LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter>
transition/expiration actions
... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter>transition/expiration actions
... </Rule> </LifecycleConfiguration>如需物件金鑰的詳細資訊,請參閱「建立物件索引鍵名稱」。
-
根據物件標籤指定篩選器 — 在下列範例中,生命週期規則會根據標籤 (
) 和值 (key
) 指定篩選器。此規則只會套用到其中具有特定標籤的物件。value
<LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>
key
</Key> <Value>value
</Value> </Tag> </Filter>transition/expiration actions
... </Rule> </LifecycleConfiguration>您可以依據多個標籤指定篩選條件。您必須將標籤包裝在
<And>
元素中,如下列範例所示。此規則會指示 Amazon S3 對具有這兩個標籤 (具有特定標籤金鑰與值) 的物件執行生命週期動作。<LifecycleConfiguration> <Rule> <Filter> <And> <Tag> <Key>
key1
</Key> <Value>value1
</Value> </Tag> <Tag> <Key>key2
</Key> <Value>value2
</Value> </Tag> ... </And> </Filter>transition/expiration actions
</Rule> </Lifecycle>此生命週期規則會套用到同時具有這兩個指定標籤的物件。Amazon S3 會執行邏輯
AND
。注意下列事項:-
每個標籤都必須完全匹配鍵和值。如果您只指定
<Key>
元素而沒有<Value>
元素,則規則只會套用至符合標籤鍵且沒有指定值的物件。 -
此規則會套用至擁有規則中所有指定標籤的物件子集。如果物件指定了其他標籤,則仍會套用規則。
注意
當您在篩選條件中指定多個標籤時,每個標籤金鑰只能指定一次。
-
-
根據字首和一個或多個標籤指定篩選 — 在生命週期規則中,您可以根據 key prefix 和一或多個標籤來指定篩選。同樣地,您必須將所有這些篩選元素包裝在
<And>
元素中,如下所示:<LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>
key-prefix
</Prefix> <Tag> <Key>key1
</Key> <Value>value1
</Value> </Tag> <Tag> <Key>key2
</Key> <Value>value2
</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status>transition/expiration actions
</Rule> </LifecycleConfiguration>Amazon S3 通過使用邏輯結合這些過濾器
AND
。也就是說,該規則適用於具有指定 key prefix 和指定標籤的物件子集。篩選條件只能有一個字首,以及零或多個標籤。 -
您可以指定 empty filter (空的篩選條件),讓規則套用到儲存貯體中的所有物件。
<LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration> -
若要依據 object size (物件大小) 篩選規則,您可以指定最小大小 (
ObjectSizeGreaterThan
) 或最大大小 (ObjectSizeLessThan
),或者您可以指定物件大小的範圍。物件大小值以位元組為單位。過濾器大小上限為 5 TB。某些儲存類別具有最小物件大小限制。如需詳細資訊,請參閱 比較 Amazon S3 儲存方案。
<LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration>注意
ObjectSizeGreaterThan
和ObjectSizeLessThan
篩選器會排除指定的值。例如,如果您將 128 KB 的物件設定為 1024 KB,以便從 S3 標準儲存類別移至 S3 標準 — IA 儲存類別,則只有 1024 KB 和 128 KB 的物件將不會轉換到 S3 標準 — IA。相反地,此規則只會套用至大於 128 KB 且大小小於 1024 KB 的物件。如果您指定的是物件大小範圍,則
ObjectSizeGreaterThan
整數必須小於ObjectSizeLessThan
值。使用多個篩選條件時,您必須將篩選條件包裝在<And>
元素中。下列範例會示範如何指定範圍介於 500 位元組和 64,000 個位元組之間的物件。<LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>
key-prefix
</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Filter> <Status>Enabled</Status>transition/expiration actions
</Rule> </LifecycleConfiguration>
描述生命週期動作的元素
您可以在 S3 生命週期規則中,指定一或多個下列預先定義的動作,指示 Amazon S3 在物件生命週期中執行特定動作。這些動作的效用取決於儲存貯體的版本控制狀態。
-
Transition
動作元素 — 您可以指定將物件從一個儲存類別轉移到另一個儲存類別的Transition
動作。如需轉換物件的詳細資訊,請參閱「支援的轉換及相關限制」。當物件生命週期的指定日期或時段一到,Amazon S3 便會執行轉換。對於使用版本控制的儲存貯體 (啟用了或暫停了版本控制的儲存貯體),
Transition
動作會套用至目前的物件版本。若要管理非最新的版本,Amazon S3 會定義NoncurrentVersionTransition
動作 (如本主題稍後的內容所述)。
-
Expiration
動作元素 —Expiration
動作會過期規則中識別的物件,並套用至任何 Amazon S3 儲存類別中的合格物件。如需儲存體方案的詳細資訊,請參閱「使用 Amazon S3 儲存體方案」。Amazon S3 會使所有過期的物件無法使用。物件是否要永久移除,取決於儲存貯體的版本控制狀態。-
未版本控制的儲存貯體 — 此
Expiration
動作會導致 Amazon S3 永久移除物件。 -
使用版本控制的儲存貯體 - 對於使用版本控制的儲存貯體 (亦即,啟用了或暫停了版本控制功能的儲存貯體),Amazon S3 在處理
Expiration
動作時,會考量幾項重點。對於已啟用版本控制或暫停版本控制的儲存貯體,適用下列情況:-
Expiration
動作只會套用到目前的版本 (其對非目前的物件版本沒有影響)。 -
當有一或多個物件版本,且刪除標記為目前的版本時,Amazon S3 不會採取任何動作。
-
若目前的物件版本是唯一的物件版本,同時也是刪除標記 (亦稱為過期物件刪除標記,這會刪除所有的物件版本,只留下刪除標記),Amazon S3 會移除過期物件刪除標記。您也可以使用過期動作,指示 Amazon S3 移除任何過期物件刪除標記。如需範例,請參閱 範例 7:移除過期物件刪除標記。
如需詳細資訊,請參閱 在 S3 儲存貯體中使用版本控制。
設定 Amazon S3 管理過期時也請考量以下事項:
-
啟用版本控制的儲存貯體
如果目前的物件版本不是刪除標記,則 Amazon S3 會新增具有唯一版本 ID 的刪除標記。如此會讓目前的版本成為非目前的版本,而刪除標記成為目前版本。
-
暫停版本控制的儲存貯體
在暫停版本控制的儲存貯體中,到期動作會導致 Amazon S3 建立刪除標記作
null
為版本 ID。此刪除標記會以 null 版本 ID 取代版本階層中所有的物件版本。這是刪除物件最有效的方法。
-
-
此外,Amazon S3 提供下列動作讓您用於管理使用版本控制之儲存貯體 (即已啟用或已暫停版本控制的儲存貯體) 中非最新的物件版本。
-
NoncurrentVersionTransition
動作元素 — 使用此動作可指定 Amazon S3 何時將物件轉換到指定的儲存類別。您可以根據物件變成非目前的特定天數來建立此到期日。除了天數之外,您還可以提供要保留的最大封存版本數目 (介於 1 到 100 之間)。此值決定 Amazon S3 才能在指定版本上執行相關動作之前,必須存在多少個較新的非最新版本。Amazon S3 會將超出指定數目的任何其他非最新版本轉換為保留。若要指定封存版本的最大數目,您還必須提供
Filter
元素。如果您未指定Filter
元素,Amazon S3 會在您提供最大數量的非最新版本時產生InvalidRequest
錯誤。如需轉換物件的詳細資訊,請參閱「支援的轉換及相關限制」。如需 Amazon S3 如何計算您在
NoncurrentVersionTransition
動作中指定天數之日期的詳細資訊,請參閱 生命週期規則:依據物件的存在時間。 -
NoncurrentVersionExpiration
動作元素 — 使用此動作可指示 Amazon S3 永久刪除物件的非最新版本。無法復原這些已刪除的物件。您可以根據物件變成非目前的特定天數來建立此到期日。除了天數之外,您還可以提供要保留的最大封存版本數目 (介於 1 到 100 之間)。此值會指定必須有多少個較新的非目前版本存在,Amazon S3 才可對指定的版本執行相關聯的動作。Amazon S3 將永久刪除超出指定數目的任何其他非最新版本以保留。若要指定封存版本的最大數目,您還必須提供
Filter
元素。如果您未指定Filter
元素,Amazon S3 會在您提供最大數量的非最新版本時產生InvalidRequest
錯誤。當您需要更正任何意外的刪除或覆寫時,延後移除非最新物件的方法十分實用。例如,您可以設定過期規則,在物件變成非目前的版本後五天再予刪除。例如,假設您在 2014 年 1 月 1 日上午 10 點 30 分建立一個名為
photo.gif
(版本識別碼 111111) 的物件。在 2014 年 2 月 1 日上午 11 時 30 分,您不小心刪除了photo.gif
(版本識別碼 111111),這會建立具有新版本識別碼 (例如版本識別碼 4857693) 的刪除標記。現在在永久刪除之前,您有五天的時間可以復原原始版本的photo.gif
(版本 ID 111111)。在 2014 年 8 月 1 日 (世界標準時間 00:00) 上,到期的生命週期規則會在成為非最新版本的五天後執行並永久刪除photo.gif
(版本識別碼 111111)。如需 Amazon S3 如何計算您在
NoncurrentVersionExpiration
動作中指定天數之日期的詳細資訊,請參閱 生命週期規則:依據物件的存在時間。注意
物件到期生命週期設定不會移除不完整的分段上傳。若要移除不完整的分段上傳,您必須使用本節稍後所述的
AbortIncompleteMultipartUpload
生命週期設定動作。
除了轉換和到期動作之外,您還可以使用下列生命週期組態動作來指示 Amazon S3 停止不完整的分段上傳,或移除過期的物件刪除標記:
-
AbortIncompleteMultipartUpload
action 元素 — 使用此元素可設定允許多部分上傳保持進行中的最長時間 (以天為單位)。如果適用的分段上傳 (由生命週期規則中prefix
指定的金鑰名稱決定) 未在預先定義的期間內成功完成,Amazon S3 會停止不完整的分段上傳。如需詳細資訊,請參閱 中止分段上傳。注意
您無法在具有使用物件標籤之篩選器的規則中指定此生命週期動作。
-
ExpiredObjectDeleteMarker
動作元素 — 在啟用版本控制的值區中,包含零個非目前版本的刪除標記稱為已過期物件刪除標記。您可以使用此生命週期動作來指示 Amazon S3 移除過期的物件刪除標記。如需範例,請參閱範例 7:移除過期物件刪除標記。注意
您無法在具有使用物件標籤之篩選器的規則中指定此生命週期動作。
Amazon S3 如何計算物件變成非最新版本的時間
在啟用版本控制的儲存貯體中,同一個物件可能會有多個版本。永遠只有一個最新版本,以及零或多個非最新版本。當您每次上傳物件時,目前的版本都會保留為非目前的版本,而新增的版本 (即後來項目) 則會變成目前的版本。為判斷物件成為非最新版本的天數,Amazon S3 會查看後來項目的建立時間。Amazon S3 會使用其後來項目建立時間開始起算後的天數,計算物件變成非最新的天數。
在使用 S3 生命週期組態時還原物件的舊版本
如中所述還原舊版本,您可以使用下列兩種方法之一來擷取物件的先前版本:
-
方法 1 — 將物件的非目前版本複製到同一個值區。複製的物件會變成該物件目前的版本,並保留所有的物件版本。
-
方法 2 — 永久刪除物件的目前版本。當您在刪除目前的物件版本時,實際上是將非目前的版本轉換成該物件目前的版本。
當您將 S3 生命週期組態規則與啟用版本控制的儲存貯體搭配使用時,建議您使用方法 1 做為最佳實務。
S3 生命週期在最終一致的模式下運作。在變更傳播到所有 Amazon S3 系統之前,您永久刪除的目前版本可能不會消失。因此,Amazon S3 可能暫時不知道這項刪除項目。) 同時,您設定要讓非最新物件過期的生命週期規則,可能會永久移除非最新物件,其中也包括了您想要還原的非最新物件。因此,按照方法 1 中的建議複製舊版本是更安全的替代方法。
生命週期動作與儲存貯體版本控制的狀態
下表摘要說明 S3 生命週期組態規則動作在物件上與包含物件之儲存貯體版本化狀態相關的行為。
動作 | 非版本控制化儲存貯體 (未啟用版本控制) | 啟用版本控制的儲存貯體 | 暫停版本控制的儲存貯體 |
---|---|---|---|
當達到物件生命週期中指定的日期或時段時。 |
Amazon S3 會將物件轉換到指定的儲存類別。 | Amazon S3 會將物件的目前版本轉換到指定的儲存類別。 | 行為與啟用了版本控制的儲存貯體相同。 |
當達到物件生命週期中指定的日期或時段時。 |
Expiration 動作會刪除物件,且無法復原已刪除的物件。 |
如果目前版本不是刪除標記,Amazon S3 會建立刪除標記,該標記會成為目前版本,而現有的目前版本會保留為非最新版本。 | 生命週期動作會建立具有null 版本 ID 的刪除標記,該標記會成為目前版本。如果物件目前版本的版本 ID 是null ,則Expiration 動作會永久刪除此版本。否則會將目前的版本保留為非目前版本。 |
物件在指定的天數內被分類為非最新版本時,或超過要保留之非最新版本的數目上限時。 |
NoncurrentVersionTransition 沒有作用。 |
Amazon S3 會將非最新的物件版本轉換到指定的儲存類別。 |
行為與啟用了版本控制的儲存貯體相同。 |
物件在指定的天數內被分類為非最新版本時,或超過要保留之非最新版本的數目上限時。 |
NoncurrentVersionExpiration 沒有作用。 |
此NoncurrentVersionExpiration 動作會永久刪除物件的封存版本,且無法復原已刪除的物件。 |
行為與啟用了版本控制的儲存貯體相同。 |
生命週期規則:依據物件的存在時間
您可以指定從建立 (或修改) 物件開始的天數,Amazon S3 可以採取指定動作的時段。
當您在 S3 生命週期組態的 Transition
與 Expiration
動作中指定天數時,請注意下列事項:
-
您指定的值是自物件建立之後的天數,動作將會發生。
-
Amazon S3 會將規則中指定的天數新增至物件建立時間,並將結果時間四捨五入至 UTC 午夜的次日來計算時間。例如,如果物件是在世界標準時間上午 10:30 時於 2014 年 1 月 15 日建立,而您在轉變規則中指定了 3 天,則物件的轉換日期會計算為世界標準時間 1/19/2014 00:00。
注意
Amazon S3 只會維護每個物件的上次修改日期。例如,Amazon S3 主控台會在物件的「內容」窗格中顯示上次修改日期。當您最初建立新物件時,此日期會反映物件的建立日期。當您取代此物件之後,其日期也會隨之變更。因此,建立日期與上次修改日期同義。
當在生命週期組態的 NoncurrentVersionTransition
與 NoncurrentVersionExpiration
動作中指定天數時,請注意下列事項:
-
您指定的值是 Amazon S3 將在指定的一或多個物件上執行動作的物件版本變為非最新版本 (亦即,物件被覆寫或刪除時) 的天數。
-
Amazon S3 會將規則中指定的天數加到建立物件的新後續任務版本的時間,並將結果時間四捨五入至 UTC 午夜的次日來計算時間。例如,在您的值區中,假設您有物件的目前版本是在世界標準時間上午 10:30 時於 2014 年 1 月 1 日建立的。如果取代目前版本的物件的新版本是在世界標準時間上午 10:30 於 2014 年 1 月 15 日建立,而您在轉移規則中指定了 3 天,則物件的轉換日期會計算為世界標準時間 1/19/2014 00:00。
生命週期規則:依據特定日期
在 S3 生命週期規則中指定動作時,可以指定 Amazon S3 採取動作的日期。當達到指定的日期時,Amazon S3 會將該動作套用到所有符合條件的物件 (依據篩選條件)。
如果您指定具有過去日期的 S3 生命週期動作,則所有合格物件都會立即符合該生命週期動作的資格。
重要
日期型動作不是單次動作。只要規則狀態為 Enabled
,Amazon S3 就會繼續套用日期型動作,即使為過去的日期亦是如此。
例如,假設您指定以日期為基礎的Expiration
動作來刪除所有物件 (假設規則中未指定篩選器)。當指定日期一到,Amazon S3 便會使儲存貯體中所有的物件過期。Amazon S3 也會繼續使您在儲存貯體中建立的任何新物件過期。若要停止生命週期動作,您必須從生命週期規則中移除動作、停用規則,或從生命週期組態中刪除規則。
日期值必須符合 ISO 8601 格式。時間一律是午夜 UTC。
注意
您無法使用 Amazon S3 主控台建立以日期為基礎的生命週期規則,但可以檢視、停用或刪除此類規則。