Amazon S3 如何處理生命週期組態中的衝突 - Amazon Simple Storage Service

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

Amazon S3 如何處理生命週期組態中的衝突

一般而言,Amazon S3 生命週期會針對成本進行最佳化。例如,如果兩個過期政策重疊,較短的過期政策會優先被接受,因此資料的存放週期會較預期為短。同樣的,如果兩個轉換原則重疊,S3 生命週期會將您的物件轉換至成本較低的儲存等級。

在這兩種情況下,S3 生命週期會嘗試為您選擇花費較少的途徑。此一般性規則的例外為 S3 Intelligent-Tiering 儲存類別。除了 S3 Glacier 和 S3 Glacier Deep Archive 儲存類別之外,S3S3 Intelligent-Tiering 較任何儲存類別都受到 S3 Lifecycle 的青睞。 S3

當您在 S3 生命週期組態中有多個規則時,物件可以在同一天符合多個 S3 生命週期動作的資格。在這種情況下,Amazon S3 遵循以下一般規則:

  • 永久刪除優先於轉換。

  • 轉換優先於建立刪除標記

  • 當物件同時符合 S3 Glacier Flexible Retrieval 和 S3 Standard-IA (或 S3 One Zone-IA) 轉換的資格時,Amazon S3 會選擇 S3 Glacier Flexible Retrieval 轉換。

重疊篩選條件和衝突生命週期動作的範例

您可能在指定的 S3 生命週期組態內,指定了重疊的字首或動作。下列範例說明 Amazon S3 解決潛在衝突的方式。

範例 1:字首重疊 (無任何衝突)

下列範例組態有兩項規則指定的字首重疊,如下所示:

  • 第一項規則指定的篩選條件為空白,代表所有位於儲存貯體中的物件。

  • 第二項規則指定的金鑰名稱字首為 logs/,代表只有一部份的物件。

規則 1 要求 Amazon S3 在建立物件的一年後,刪除所有物件。規則 2 要求 Amazon S3 在建立 30 天後將物件子集轉換為 S3 標準 – IA 儲存類別。

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> </Filter> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>30</Days> </Transition> </Rule> </LifecycleConfiguration>

由於在這種情況下沒有衝突,因此 Amazon S3 會在建立 30 天後將具有 logs/ 字首的物件轉換至 S3 標準 – IA 儲存類別。系統會刪除任何建立達到一年的物件。

範例 2:生命週期動作相衝突

在此範例組態中有兩個規則,分別指示 Amazon S3 對同一組的部分物件,在物件生命週期內的同一時間執行兩個不同的動作:

  • 兩項規則都指定了相同的金鑰名稱字首,因此兩項規則都會套用到相同的一組部分物件。

  • 套用規則時,兩項規則都相同地指定在建立物件的 365 天後。

  • 一項規則指示 Amazon S3 將物件轉換為 S3 標準 – IA 儲存類別,另一項規則則指示 Amazon S3 在相同的時間將物件設為過期。

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>365</Days> </Transition> </Rule> </LifecycleConfiguration>

在此情況下,因為您想要將物件設定為過期 (即將移除),所以將其轉換為其他儲存類別不具任何意義,Amazon S3 因而會對這些物件選擇過期動作。

範例 3:字首重疊導致生命週期動作相衝突

在此範例中,組態有兩項規則,指定的重疊字首如下所示:

  • 規則 1 指定的字首為空白 (代表所有物件)。

  • 規則 2 指定了金鑰名稱字首 (logs/),代表所有物件其中一部分。

對於金鑰名稱字首為 logs/ 的一部分物件,將會套用兩項規則中的 S3 生命週期動作。其中一項規則指示 Amazon S3 在建立物件的 10 天後轉換物件,另一項規則則指示 Amazon S3 在建立物件的 365 天後轉換物件。

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>10</Days> </Transition> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>365</Days> </Transition> </Rule> </LifecycleConfiguration>

在此情況下,Amazon S3 會選擇在建立物件的 10 天進行轉換。

範例 4:使用標籤設定篩選條件以及所引發的生命週期動作衝突

假設您有下列 S3 生命週期組態,其中有兩項規則,每一項都指定了標籤篩選條件:

  • 規則 1 指定了使用標籤來設定篩選條件 (tag1/value1)。此項規則指示 Amazon S3 在建立物件的 365 天後,將其轉換為 S3 Glacier Flexible Retrieval 儲存類別。

  • 規則 2 指定了使用標籤來設定篩選條件 (tag2/value2)。此項規則指示 Amazon S3 在建立物件的 14 天後將物件設為過期。

S3 生命週期組態如以下範例所示。

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Tag> <Key>tag1</Key> <Value>value1</Value> </Tag> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>GLACIER<StorageClass> <Days>365</Days> </Transition> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Tag> <Key>tag2</Key> <Value>value2</Value> </Tag> </Filter> <Status>Enabled</Status> <Expiration> <Days>14</Days> </Expiration> </Rule> </LifecycleConfiguration>

如果物件擁有兩個標籤,則 Amazon S3 必須決定要遵循哪個規則。在這種情況下,Amazon S3 會選擇在建立物件的 14 天後將其設為過期。該物件將會移除,因此不會套用轉換動作。