生命週期組態元素 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

生命週期組態元素

S3 生命週期組態包含生命週期規則,其中包含描述 Amazon S3 在 和 物件生命週期期間所採取動作的各種元素。您可以將 Amazon S3 生命週期組態指定為 XML,其中包含一或多個生命週期規則,其中每個規則包含一或多個元素。

<LifecycleConfiguration> <Rule> <Element> </Rule> <Rule> <Element> <Element> </Rule> </LifecycleConfiguration>

每項規則皆包含下列各項:

  • 包含規則 ID 的規則中繼資料,以及指出規則是啟用或停用的狀態。當規則停用時,Amazon S3 不會執行規則中指定的任何動作。

  • 識別規則套用之物件的篩選條件。您可以使用物件大小、物件金鑰字首、一或多個物件標籤或篩選條件組合來指定篩選條件。

  • 當您想要 Amazon S3 執行指定的動作時,物件的生命週期中必須包含具有日期或時段的一或多個轉換或過期動作。

下列各節說明 S3 生命週期組態中的XML元素。如需組態範例,請參閱 S3 生命週期組態的範例

ID 元素

S3 生命週期組態最多可有 1,000 項規則。此限制不可調整。<ID> 元素可唯一識別規則。ID 長度不得超過 255 個字元。

Status 元素

<Status> 元素值可以是 EnabledDisabled。當規則停用時,Amazon S3 不會執行規則中定義的任何動作。

Filter 元素

S3 生命週期規則可以根據您在規則中指定的<Filter>元素,套用至儲存貯體中的全部或部分物件。

您可以依金鑰字首 (key prefix)、物件標籤或兩者的組合來篩選物件 (在此情況下,Amazon S3 會使用邏輯 AND 來合併篩選條件)。如需篩選條件的範例和詳細資訊,請參閱 將篩選條件新增至生命週期規則

  • 使用金鑰字首指定篩選條件 – 此範例顯示適用於金鑰名稱字首 () 物件子集的 S3 生命週期規則logs/。例如,生命週期規則會套用至物件 logs/mylog.txtlogs/temp1.txtlogs/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>

    如需物件金鑰的詳細資訊,請參閱「命名 Amazon S3 物件」。

  • 根據物件標籤指定篩選條件 – 在下列範例中,生命週期規則會根據標籤 (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>元素,則規則只會套用至符合標籤索引鍵且未指定值的物件。

    • 此規則會套用至擁有規則中所有指定標籤的物件子集。如果物件指定了其他標籤,則仍會套用規則。

    注意

    當您在篩選條件中指定多個標籤時,每個標籤金鑰只能指定一次。

  • 根據字首和一或多個標籤指定篩選條件 – 在生命週期規則中,您可以根據金鑰字首和一或多個標籤指定篩選條件。同樣地,您必須包裝<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。也就是說,規則會套用至具有指定金鑰字首和指定標籤的物件子集。篩選條件只能有一個字首,以及零或多個標籤。

  • 您可以指定 empty filter (空的篩選條件),讓規則套用到儲存貯體中的所有物件。

    <LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status> transition/expiration actions </Rule> </LifecycleConfiguration>
  • 若要依據 object size (物件大小) 篩選規則,您可以指定最小大小 (ObjectSizeGreaterThan) 或最大大小 (ObjectSizeLessThan),或者您可以指定物件大小的範圍。

    物件大小值以位元組為單位。根據預設,小於 128 KB 的物件不會轉換為任何儲存類別,除非您指定較小的最小大小 (ObjectSizeGreaterThan) 或最大大小 ()ObjectSizeLessThan。如需詳細資訊,請參閱範例:允許轉換小於 128 KB 的物件

    <LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status> transition/expiration actions </Rule> </LifecycleConfiguration>
    注意

    ObjectSizeGreaterThanObjectSizeLessThan篩選條件會排除指定的值。例如,如果您將大小為 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 移除任何過期物件刪除標記。如需範例,請參閱 移除已啟用版本控制之儲存貯體中的過期物件刪除標記

      如需詳細資訊,請參閱使用 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錯誤。

    當您需要更正任何意外的刪除或覆寫時,延後移除非最新物件的方法十分實用。例如,您可以設定過期規則,在物件變成非目前的版本後五天再予刪除。例如,假設您在 1/1/2014 上午 10:30 UTC建立名為 photo.gif(版本 ID 11111) 的物件。在 1/2/2014 上午 11:30 UTC,您不小心刪除 photo.gif(版本 ID 111111),這會建立具有新版本 ID 的刪除標記 (例如版本 ID 4857693)。現在在永久刪除之前,您有五天的時間可以復原原始版本的 photo.gif (版本 ID 111111)。在 1/8/2014 的 00:00 UTC,過期的生命週期規則會執行並永久刪除 photo.gif(版本 ID 1111111),在變成非目前版本後五天。

    如需 Amazon S3 如何計算您在 NoncurrentVersionExpiration 動作中指定天數之日期的詳細資訊,請參閱 生命週期規則:依據物件的存在時間

    注意

    物件過期生命週期組態不會移除不完整的分段上傳。若要移除未完成的分段上傳,您必須使用本節稍後所述的AbortIncompleteMultipartUpload生命週期組態動作。

除了轉換和過期動作之外,您可以使用下列生命週期組態動作來指示 Amazon S3 停止未完成的分段上傳,或移除過期的物件刪除標記:

  • AbortIncompleteMultipartUpload 動作元素 – 使用此元素可設定您想要允許分段上傳保持進行中的最大時間 (以天為單位)。如果未在預先定義的期間內成功完成適用的分段上傳 (由生命週期規則中prefix指定的金鑰名稱決定),Amazon S3 會停止不完整的分段上傳。如需詳細資訊,請參閱中止分段上傳

    注意

    您無法在具有使用物件標籤之篩選條件的規則中指定此生命週期動作。

  • ExpiredObjectDeleteMarker 動作元素 – 在啟用版本控制的儲存貯體中,具有零非目前版本的刪除標記稱為過期的物件刪除標記 。您可以使用此生命週期動作指示 Amazon S3 移除過期的物件刪除標記。如需範例,請參閱移除已啟用版本控制之儲存貯體中的過期物件刪除標記

    注意

    您無法在具有使用物件標籤之篩選條件的規則中指定此生命週期動作。

Amazon S3 如何計算物件變成非最新版本的時間

在啟用版本控制的儲存貯體中,同一個物件可能會有多個版本。永遠只有一個最新版本,以及零或多個非最新版本。當您每次上傳物件時,目前的版本都會保留為非目前的版本,而新增的版本 (即後來項目) 則會變成目前的版本。為判斷物件成為非最新版本的天數,Amazon S3 會查看後來項目的建立時間。Amazon S3 會使用其後來項目建立時間開始起算後的天數,計算物件變成非最新的天數。

在使用 S3 生命週期組態時還原物件的舊版本

如 中所述還原舊版本,您可以使用下列兩種方法之一來擷取物件的先前版本:

  • 方法 1 – 將物件的非目前版本複製到相同的儲存貯體。複製的物件會變成該物件目前的版本,並保留所有的物件版本。

  • 方法 2 – 永久刪除物件的目前版本。當您在刪除目前的物件版本時,實際上是將非目前的版本轉換成該物件目前的版本。

當您將 S3 生命週期組態規則與啟用版本控制的儲存貯體搭配使用時,建議您使用方法 1 作為最佳實務。

S3 生命週期在最終一致的模式下運作。在變更傳播到所有 Amazon S3 系統之前,您永久刪除的目前版本可能不會消失。(因此,Amazon S3 可能暫時不知道此刪除。) 同時,您設定要讓非最新物件過期的生命週期規則,可能會永久移除非最新物件,其中也包括了您想要還原的非最新物件。因此,複製方法 1 中建議的舊版本是更安全的替代方案。

生命週期動作與儲存貯體版本控制的狀態

下表摘要說明 S3 生命週期組態規則動作對物件的行為,其與包含物件之儲存貯體的版本控制狀態相關。

動作 非版本控制化儲存貯體 (未啟用版本控制) 啟用版本控制的儲存貯體 暫停版本控制的儲存貯體

Transition

當達到物件生命週期中指定的日期或時段時。

Amazon S3 會將物件轉換到指定的儲存類別。 Amazon S3 會將物件的目前版本轉換到指定的儲存類別。 行為與啟用了版本控制的儲存貯體相同。

Expiration

當達到物件生命週期中指定的日期或時段時。

Expiration動作會刪除物件,且已刪除的物件無法復原。 如果目前版本不是刪除標記,Amazon S3 會建立刪除標記,這會成為目前版本,而現有目前版本會保留為非目前版本。 生命週期動作會建立null版本 ID 的刪除標記,此 ID 會成為目前版本。如果物件目前版本的版本 ID 為 null,則Expiration動作會永久刪除此版本。否則會將目前的版本保留為非目前版本。

NoncurrentVersionTransition

物件在指定的天數內被分類為非最新版本時,或超過要保留之非最新版本的數目上限時。

NoncurrentVersionTransition 沒有作用。

Amazon S3 會將非最新的物件版本轉換到指定的儲存類別。

行為與啟用了版本控制的儲存貯體相同。

NoncurrentVersionExpiration

物件在指定的天數內被分類為非最新版本時,或超過要保留之非最新版本的數目上限時。

NoncurrentVersionExpiration 沒有作用。 NoncurrentVersionExpiration動作會永久刪除物件的非目前版本,且已刪除的物件無法復原。 行為與啟用了版本控制的儲存貯體相同。

生命週期規則:依據物件的存在時間

您可以在物件建立 (或修改) 的天數中指定時段,Amazon S3 可以採取指定的動作。

當您在 S3 生命週期組態的 TransitionExpiration 動作中指定天數時,請注意下列事項:

  • 您指定的值是物件建立後,動作發生後的天數。

  • Amazon S3 計算時間的方式是將規則中指定的天數新增至物件建立時間,並將產生的時間四捨五入至隔天午夜 UTC。例如,如果物件是在 1/15/2014 上午 10:30 建立,UTC而您在轉換規則中指定 3 天,則物件的轉換日期會計算為 1/19/2014 00:00UTC。

注意

Amazon S3 只會維護每個物件的上次修改日期。例如,Amazon S3 主控台會在物件的屬性窗格中顯示上次修改的日期。當您最初建立新物件時,此日期會反映物件建立的日期。當您取代此物件之後,其日期也會隨之變更。因此,建立日期與上次修改日期同義。

當在生命週期組態的 NoncurrentVersionTransitionNoncurrentVersionExpiration 動作中指定天數時,請注意下列事項:

  • 您指定的值是物件版本變為非目前 (即物件覆寫或刪除) 的天數,Amazon S3 將在指定的物件上執行動作。

  • Amazon S3 計算時間的方式是將規則中指定的天數新增至建立新的物件後續版本的時間,並將產生的時間四捨五入至隔天午夜 UTC。例如,在您的儲存貯體中,假設您有一個在 1/1/2014 上午 10:30 建立的物件的最新版本UTC。如果取代目前版本的物件新版本是在 1/15/2014 上午 10:30 建立UTC,而您在轉換規則中指定 3 天,則物件的轉換日期會計算為 1/19/2014 00:00UTC。

生命週期規則:依據特定日期

在 S3 生命週期規則中指定動作時,可以指定 Amazon S3 採取動作的日期。當達到指定的日期時,Amazon S3 會將該動作套用到所有符合條件的物件 (依據篩選條件)。

如果您指定具有過去日期的 S3 生命週期動作,則所有合格的物件都會立即符合該生命週期動作的資格。

重要

日期型動作不是單次動作。只要規則狀態為 Enabled,Amazon S3 就會繼續套用日期型動作,即使為過去的日期亦是如此。

例如,假設您指定日期型Expiration動作來刪除所有物件 (假設規則中未指定篩選條件)。當指定日期一到,Amazon S3 便會使儲存貯體中所有的物件過期。Amazon S3 也會繼續過期您在儲存貯體中建立的任何新物件。若要停止生命週期動作,您必須從生命週期規則中移除動作、停用規則,或從生命週期組態中刪除規則。

日期值必須符合 ISO 8601 格式。時間一律為午夜 UTC。

注意

您無法使用 Amazon S3 主控台建立以日期為基礎的生命週期規則,但您可以檢視、停用或刪除這些規則。