本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3 生命週期組態範例
本節提供 S3 生命週期組態的範例。每個範例都會說明在各個範例情境下指定 XML 的方式。
主題
在建立後一天內封存所有物件
每個 S3 生命週期規則都包含篩選條件,您可用於找出儲存貯體中將套用 S3 生命週期規則的一組物件。下列 S3 生命週期組態說明如何指定篩選條件的範例。
-
在此 S3 生命週期組態規則中,篩選條件指定了一個金鑰字首 (key prefix) (
tax/
)。因此,規則將會套用至其金鑰名稱字首為tax/
的物件,例如tax/doc1.txt
與tax/doc2.txt
。該項規則指定了兩個動作,指揮 Amazon S3 執行下列操作:
-
在建立物件的 365 天 (一年) 後將物件轉換為 S3 Glacier Flexible Retrieval 儲存類別。
-
在建立物件的 3,650 天 (10 年) 後將物件刪除 (
Expiration
動作)。
<LifecycleConfiguration> <Rule> <ID>Transition and Expiration Rule</ID> <Filter> <Prefix>tax/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> </LifecycleConfiguration>
除了以物件建立之後天數的方式指定物件留存期之外,您也可以指定每項動作的日期。但在相同的規則中,不可同時使用
Date
與Days
。 -
-
若想要將 S3 生命週期規則套用到儲存貯體中的所有物件,請指定空白的字首。在下列組態中,規則會指定
Transition
動作,指示 Amazon S3 在建立物件的 0 天後,將其轉換為 S3 Glacier Flexible Retrieval 儲存類別。此規則表示物件在建立後的 UTC 午夜時便有資格封存至 S3 Glacier Flexible Retrieval。如需生命週期限制的詳細資訊,請參閱轉換的限制和考量事項。<LifecycleConfiguration> <Rule> <ID>Archive all object same-day upon creation</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
-
您可以在篩選條件中指定零或一個金鑰名稱字首,以及零或多個物件標籤。下列程式碼範例會將 S3 生命週期規則套用到金鑰字首 (key prefix) 為
tax/
,以及有兩個具有指定金鑰及數值之標籤的一組物件。當指定超過一個篩選條件時,您必須如所示地納入<And>
元素 (Amazon S3 會套用邏輯AND
來合併指定的篩選條件)。... <Filter> <And> <Prefix>tax/</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> </And> </Filter> ...
-
您可以僅根據標籤來篩選物件。例如,下列 S3 生命週期規則會套用至具有兩個指定標籤的物件 (其並未指定任何字首)。
... <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> </And> </Filter> ...
重要
在 S3 生命週期組態中出現多項規則時,您可在同一天內對物件套用多個 S3 生命週期動作。在這種情況下,Amazon S3 遵循以下一般規則:
-
永久刪除優先於轉換。
-
轉換優先於建立刪除標記。
-
當物件同時符合 S3 Glacier Flexible Retrieval 和 S3 Standard-IA (或 S3 One Zone-IA) 轉換的資格時,Amazon S3 會選擇 S3 Glacier Flexible Retrieval 轉換。
如需範例,請參閱 篩選條件重疊和生命週期動作相衝突的範例。
暫時停用生命週期規則
您可以使用 status
元素暫時停用 S3 生命週期規則。如果您想要測試新規則或對組態問題進行疑難排解,而不覆寫現有的規則,這種方法十分實用。下列 S3 生命週期組態指定兩項規則:
-
規則 1 指示 Amazon S3 在建立物件之後不久,即將具備
logs/
字首的物件轉換為 S3 Glacier Flexible Retrieval 儲存類別。 -
規則 2 指示 Amazon S3 在建立物件之後不久,即將具備
documents/
字首的物件轉換為 S3 Glacier Flexible Retrieval 儲存類別。
在組態中,規則 1 為啟用狀態,規則 2 則為停用狀態。Amazon S3 會忽略已停用的規則。
<LifecycleConfiguration> <Rule> <ID>Rule1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> <Rule> <ID>Rule2</ID> <Filter> <Prefix>documents/</Prefix> </Filter> <Status>Disabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
在物件的生命週期內降級儲存類別
在此範例中,將使用 S3 生命週期組態,在物件的生命週期內降級其儲存體方案。降級動作有助於降低儲存體費用。如需定價的詳細資訊,請參閱 Amazon S3 定價
下列 S3 生命週期組態指定了一則會套用至其金鑰名稱字首為 logs/
之物件的規則。該規則指定下列動作:
-
兩個轉換動作:
-
在建立物件的 30 天後將物件轉換為 S3 標準 – IA 儲存類別。
-
在建立物件的 90 天後將物件轉換為 S3 Glacier Flexible Retrieval 儲存類別。
-
-
一個過期動作,指示 Amazon S3 在建立物件的一年之後將其刪除。
<LifecycleConfiguration> <Rule> <ID>example-id</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <Transition> <Days>90</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>
注意
若所有的動作皆會套用至相同的一組物件,可以使用單一規則描述所有 S3 生命週期動作 (依篩選條件識別)。否則,您可以新增多個規則,然後每個規則指定不同的篩選條件。
重要
在 S3 生命週期組態中出現多項規則時,您可在同一天內對物件套用多個 S3 生命週期動作。在這種情況下,Amazon S3 遵循以下一般規則:
-
永久刪除優先於轉換。
-
轉換優先於建立刪除標記。
-
當物件同時符合 S3 Glacier Flexible Retrieval 和 S3 Standard-IA (或 S3 One Zone-IA) 轉換的資格時,Amazon S3 會選擇 S3 Glacier Flexible Retrieval 轉換。
如需範例,請參閱 篩選條件重疊和生命週期動作相衝突的範例。
指定多個規則
若希望為不同的物件套用不同的 S3 生命週期動作,可以指定多項規則。下列 S3 生命週期組態有兩項規則:
-
規則 1 會套用到金鑰名稱字首為
classA/
的物件。該規則指示 Amazon S3 在建立物件的一年後,將其轉換為 S3 Glacier Flexible Retrieval 儲存類別,並在建立物件的 10 年後將其刪除。 -
規則 2 會套用到金鑰名稱字首為
classB/
的物件。其指示 Amazon S3 在建立物件的 90 天後,將其轉換為 S3 標準 – IA 儲存類別,並在建立物件的一年後將其刪除。
<LifecycleConfiguration> <Rule> <ID>ClassADocRule</ID> <Filter> <Prefix>classA/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> <Rule> <ID>ClassBDocRule</ID> <Filter> <Prefix>classB/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>90</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>
重要
在 S3 生命週期組態中出現多項規則時,您可在同一天內對物件套用多個 S3 生命週期動作。在這種情況下,Amazon S3 遵循以下一般規則:
-
永久刪除優先於轉換。
-
轉換優先於建立刪除標記。
-
當物件同時符合 S3 Glacier Flexible Retrieval 和 S3 Standard-IA (或 S3 One Zone-IA) 轉換的資格時,Amazon S3 會選擇 S3 Glacier Flexible Retrieval 轉換。
如需範例,請參閱 篩選條件重疊和生命週期動作相衝突的範例。
為已啟用版本控制的儲存貯體指定生命週期規則
假設您有一個已啟用版本控制的儲存貯體,就表示對於每個物件來說,您都有一個最新版本及零或多個非最新版本。(如需 S3 版本控制的詳細資訊,請參閱 使用 S3 版本控制保留多個版本的物件。)
在下列範例中,您想要維持一年的歷史記錄值,並保留 5 個非目前版本。S3 生命週期組態支援保留 1 到 100 個版本的任何物件。請注意,在 Amazon S3 可以使指定版本過期之前,必須存在超過 5 個較新的非最新版本。Amazon S3 將永久刪除指定數字以外的任何其他非最新版本,以進行保留。若要進行刪除,必須同時超過 NoncurrentDays
和 NewerNoncurrentVersions
值。
若要節省儲存成本,您會希望在非最新版本脫離最新版本 30 天後,將其移至 S3 Glacier Flexible Retrieval (假設這些非最新物件是您不需要即時存取的原始資料)。此外,您預計最新版本的存取頻率會在建立的 90 天後下降,因此可能會選擇將這些物件轉換為 S3 Standard-IA 儲存類別。
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>90</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>GLACIER</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>5</NewerNoncurrentVersions> <NoncurrentDays>365</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
移除已啟用版本控制之儲存貯體中的過期物件刪除標記
對於每個物件來說,已啟用版本控制的儲存貯體會有一個目前的版本,以及零或多個非目前的版本。當您刪除物件時,請注意下列事項:
-
若在刪除請求中並未指定版本 ID,則 Amazon S3 會為物件新增刪除標記,而非直接刪除該物件。最新物件版本會變為非最新版本,且刪除標記將會成為最新版本。
-
如果您在刪除請求中指定版本 ID,Amazon S3 會永久刪除物件版本 (不會建立刪除標記)。
-
沒有任何非最新版本的刪除標記,稱為過期物件刪除標記。
此範例說明在儲存貯體中建立過期物件刪除標記,以及使用 S3 生命週期組態來指示 Amazon S3 移除過期物件刪除標記的情況。
假設您撰寫的 S3 生命週期組態使用 NoncurrentVersionExpiration
動作,在非最新版本變為最新版本的 30 天後移除非最新版本,並保留 10 個非最新版本,如下列範例所示。請注意,在 Amazon S3 可以使指定版本過期之前,必須存在超過 10 個較新的非最新版本。Amazon S3 將永久刪除指定數字以外的任何其他非最新版本,以進行保留。若要進行刪除,必須同時超過 NoncurrentDays
和 NewerNoncurrentVersions
值。
<LifecycleConfiguration> <Rule> ... <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
NoncurrentVersionExpiration
動作不適用於目前的物件版本。只會移除非最新版本。
對於最新物件版本來說,您有下列選項可管理其生命週期,完全取決於最新物件版本是否妥善定義了生命週期:
-
最新物件版本遵循妥善定義的生命週期。
在此情況下,可以使用 S3 生命週期組態搭配
Expiration
動作,指示 Amazon S3 移除最新版本,如以下範例所示。<LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
在此範例中,Amazon S3 會在建立目前版本 60 天後移除目前版本,方法是為每個目前物件版本新增刪除標記。此程序會讓最新版本成為非最新版本,而刪除標記則會成為最新版本。如需詳細資訊,請參閱使用 S3 版本控制保留多個版本的物件。
注意
您無法在相同的規則上同時指定
Days
和ExpiredObjectDeleteMarker
標籤。在您指定Days
標籤的情況下,一旦刪除標記足夠舊,符合留存時間標準,Amazon S3 將自動執行ExpiredObjectDeleteMarker
清除。若要在刪除標記成為唯一版本後立即清除刪除標記,請建立僅包含ExpiredObjectDeleteMarker
標籤的個別規則。相同 S3 生命週期組態中的
NoncurrentVersionExpiration
動作,會在物件成為非最新版本的 30 天後,移除非最新版本物件。因此,在此範例中,所有物件版本會在建立物件 90 天後永久移除。請注意,在此範例中,Amazon S3 必須先存在超過 10 個較新的非最新版本,才能使指定版本過期。Amazon S3 將永久刪除指定數字以外的任何其他非最新版本,以進行保留。若要進行刪除,必須同時超過NoncurrentDays
和NewerNoncurrentVersions
值。雖然在此過程中會建立過期的物件刪除標記,但 Amazon S3 會為您偵測並移除已過期的物件刪除標記。
-
最新物件版本沒有妥善定義的生命週期。
在此情況下,您可以在不需要物件的時候手動將其移除,透過一或多個非最新版本建立刪除標記。如果具有
NoncurrentVersionExpiration
動作的 S3 生命週期組態,移除了所有非最新版本,則您即會有已過期的物件刪除標記。S3 生命週期組態特別針對此案例提供
Expiration
動作,您可以使用此動作移除已過期的物件刪除標記。<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Expiration> <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker> </Expiration> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
藉由在 Expiration
動作中將 ExpiredObjectDeleteMarker
元素設定為 true
,您可以指示 Amazon S3 移除已過期的物件刪除標記。
注意
使用 ExpiredObjectDeleteMarker
S3 生命週期動作時,該規則無法指定使用標籤設定的篩選條件。
中止分段上傳的生命週期組態
您可以使用 Amazon S3 分段上傳 REST API 操作,分段上傳大型物件。如需分段上傳的詳細資訊,請參閱「在 Amazon S3 中使用分段上傳來上傳和複製物件」。
透過使用 S3 生命週期組態,您可以指示 Amazon S3 在分段上傳啟動後指定的天數內,中止尚未完成的分段上傳 (透過規則中指定的金鑰名稱字首加以識別)。Amazon S3 中止分段上傳後,其會刪除所有與該分段上傳相關聯的部分。此過程可確保您不會有未完成之分段上傳的部分存放在 Amazon S3 中,從而協助您控制儲存成本。
注意
使用 AbortIncompleteMultipartUpload
S3 生命週期動作時,該規則無法指定使用標籤設定的篩選條件。
下列 S3 生命週期組態範例指定了一項規則,其會採取 AbortIncompleteMultipartUpload
動作。此動作會指示 Amazon S3 在分段上傳開始的七天後,停止未完成的分段上傳。
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Filter> <Prefix>
SomeKeyPrefix
/</Prefix> </Filter> <Status>rule-status
</Status> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>7</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration>
讓沒有資料的非最新物件過期
您可以建立僅根據物件大小轉換物件的規則。您可以指定最小大小 (ObjectSizeGreaterThan
) 或最大大小 (ObjectSizeLessThan
),或者您可以指定物件大小 (以位元組計) 的範圍。使用多個篩選條件時,例如字首和大小規則,您必須將篩選條件包裝在 <And>
元素中。
<LifecycleConfiguration> <Rule> <ID>Transition with a prefix and based on size</ID> <Filter> <And> <Prefix>tax/</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </And> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
如果您同時使用 ObjectSizeGreaterThan
和 ObjectSizeLessThan
元素指定範圍,則物件大小上限必須大於物件大小下限。使用多個篩選條件時,您必須將篩選條件包裝在 <And>
元素中。以下範例顯示如何指定 500 位元組到 64,000 個位元組範圍內的物件。當您指定範圍時,ObjectSizeGreaterThan
和 ObjectSizeLessThan
篩選條件會排除指定的值。如需詳細資訊,請參閱Filter 元素。
<LifecycleConfiguration> <Rule> ... <And> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Rule> </LifecycleConfiguration>
您也可以建立規則專門讓沒有任何資料的非最新物件過期,包括啟用版本控制的儲存貯體中建立的非最新刪除標記物件。下列範例使用 NoncurrentVersionExpiration
動作,在非最新版本成為最新版本的 30 天後移除非最新版本,並保留 10 個非最新版本。此範例也會使用 ObjectSizeLessThan
元素,只篩選沒有資料的物件。
請注意,在 Amazon S3 可以使指定版本過期之前,必須存在超過 10 個較新的非最新版本。Amazon S3 將永久刪除指定數字以外的任何其他非最新版本,以進行保留。若要進行刪除,必須同時超過 NoncurrentDays
和 NewerNoncurrentVersions
值。
<LifecycleConfiguration> <Rule> <ID>Expire noncurrent with size less than 1 byte</ID> <Filter> <ObjectSizeLessThan>1</ObjectSizeLessThan> </Filter> <Status>Enabled</Status> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
範例:允許轉換小於 128 KB 的物件
Amazon S3 會將預設行為套用至您的生命週期組態,以防止小於 128 KB 的物件轉換至任何儲存類別。您可以透過新增大小下限 (ObjectSizeGreaterThan
) 或大小上限 (ObjectSizeLessThan
) 篩選條件 (可對組態指定較小的大小) 來允許較小的物件轉換。下列範例允許將任何小於 128 KB 的物件轉換為 S3 Glacier Instant Retrieval 儲存類別:
<LifecycleConfiguration> <Rule> <ID>Allow small object transitions</ID> <Filter> <ObjectSizeGreaterThan>1</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER_IR</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
注意
在 2024 年 9 月,Amazon S3 更新了小型物件的預設轉換行為,如下所示:
更新預設轉換行為 — 自 2024 年 9 月起,預設行為可防止小於 128 KB 的物件轉換至任何儲存類別。
先前的預設轉換行為 — 在 2024 年 9 月之前,預設行為允許小於 128 KB 的物件只轉換至 S3 Glacier 和 S3 Glacier Deep Archive 儲存類別。
除非加以修改,否則在 2024 年 9 月之前建立的組態會保留先前的轉換行為。亦即,如果您建立、編輯或刪除規則,組態的預設轉換行為會變更為更新的行為。如果使用案例有所需求,您可以變更預設轉換行為,讓小於 128KB 的物件轉換至 S3 Glacier 和 S3 Glacier Deep Archive。若要這樣做,請在PutBucketLifecycleConfiguration請求x-amz-transition-object-size-minimum-default
中使用選用標頭。
下列範例示範如何在PutBucketLifecycleConfiguration請求中使用 x-amz-transition-object-size-minimum-default
標頭,將varies_by_storage_class
預設轉換行為套用至 S3 生命週期組態。此行為允許小於 128 KB 的物件轉換為 S3 Glacier 或 S3 Glacier Deep Archive 儲存類別。所有其他儲存類別預設會防止小於 128 KB 的轉換。您仍然可以使用自訂篩選條件來變更任何儲存類別的轉換大小下限。自訂篩選條件一律優先於預設轉換行為:
HTTP/1.1 200 x-amz-transition-object-size-minimum-default: varies_by_storage_class <?xml version="1.0" encoding="UTF-8"?> ...