

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

# Amazon S3 如何處理生命週期組態中的衝突
<a name="lifecycle-conflicts"></a>

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

在這兩種情況下，S3 生命週期會嘗試為您選擇花費較少的途徑。此一般性規則的例外為 S3 Intelligent-Tiering 儲存類別。相較於其他儲存類別，S3 Intelligent-Tiering 較適用於 S3 生命週期，除了 S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 儲存類別之外。

在 S3 生命週期組態中出現多項規則時，您可在同一天內對物件套用多個 S3 生命週期動作。在這種情況下，Amazon S3 遵循以下一般規則：
+ 永久刪除優先於轉換。
+ 轉換優先於建立[刪除標記](DeleteMarker.md)。
+ 當物件同時符合 S3 Glacier Flexible Retrieval 和 S3 Standard-IA (或 S3 One Zone-IA) 轉換的資格時，Amazon S3 會選擇 S3 Glacier Flexible Retrieval 轉換。

## 篩選條件重疊和生命週期動作相衝突的範例
<a name="lifecycle-config-conceptual-ex5"></a>

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

**Example 1：字首重疊 (無任何衝突)**  
下列範例組態有兩項規則指定的字首重疊，如下所示：  
+ 第一項規則指定的篩選條件為空白，代表所有位於儲存貯體中的物件。
+ 第二項規則指定的金鑰名稱字首為 `logs/`，代表只有一部份的物件。
規則 1 要求 Amazon S3 在建立物件的一年後，刪除所有物件。規則 2 要求 Amazon S3 在建立 30 天後將物件子集轉換為 S3 標準 – IA 儲存類別。  

```
 1. <LifecycleConfiguration>
 2.   <Rule>
 3.     <ID>Rule 1</ID>
 4.     <Filter>
 5.     </Filter>
 6.     <Status>Enabled</Status>
 7.     <Expiration>
 8.       <Days>365</Days>
 9.     </Expiration>
10.   </Rule>
11.   <Rule>
12.     <ID>Rule 2</ID>
13.     <Filter>
14.       <Prefix>logs/</Prefix>
15.     </Filter>
16.     <Status>Enabled</Status>
17.     <Transition>
18.       <StorageClass>STANDARD_IA</StorageClass>
19.       <Days>30</Days>
20.     </Transition>
21.    </Rule>
22. </LifecycleConfiguration>
```
由於在這種情況下沒有衝突，因此 Amazon S3 會在建立 30 天後將具有 `logs/` 字首的物件轉換至 S3 標準 – IA 儲存類別。系統會刪除任何建立達到一年的物件。

**Example 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 因而會對這些物件選擇過期動作。

**Example 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 天進行轉換。

**Example 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 天後將其設為過期。該物件將會移除，因此不會套用轉換動作。



