

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

# 將篩選條件新增至生命週期規則
<a name="intro-lifecycle-filters"></a>

篩選條件是選用的生命週期規則元素，可用來指定套用規則的物件。

您可使用下列元素來篩選物件：

**金鑰字首**  
您可以根據字首來篩選物件。如果要將生命週期動作套用至具有不同字首的物件子集，請為每個動作建立單獨的規則。

**物件標籤**  
您可以根據一個或多個標籤來篩選物件。每個標籤都必須完全符合金鑰和值，而且如果您指定多個標籤，每個標籤金鑰都必須是唯一的。具有多個物件標籤的篩選條件，會套用至已指定所有標籤的部分物件。如果物件指定了其他標籤，則仍會套用篩選條件。  
如果您只指定一個 `Key` 元素，而且沒有 `Value` 元素，則規則將僅適用於符合標籤金鑰且未指定值的物件。

**物件大小下限或上限**  
您可以根據大小來篩選物件。您可以指定大小下限 (`ObjectSizeGreaterThan`) 或大小上限 (`ObjectSizeLessThan`)，或者您可以在相同篩選條件中指定物件大小的範圍。物件大小值以位元組為單位。篩選條件大小上限為 50 TB。Amazon S3 會將預設的物件大小下限套用至生命週期組態。如需詳細資訊，請參閱[範例：允許轉換小於 128 KB 的物件](lifecycle-configuration-examples.md#lc-small-objects)。

您可以結合不同的篩選條件元素，在這種情況下，Amazon S3 會使用邏輯 `AND`。

## 篩選條件範例
<a name="filter-examples"></a>

下列範例示範如何使用不同的篩選條件元素：
+ **使用金鑰字首指定篩選條件** – 此範例示範的 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>
  ```
**注意**  
 如果您有一或多個字首以相同的字元開頭，您可以在篩選條件中指定沒有尾斜線 (`/`) 的部分字首，以在規則中包含這些字首。例如，假設您有這些字首：  

  ```
  sales1999/
                  sales2000/
                  sales2001/
  ```
若要在規則中包含所有三個字首，請在生命週期規則中指定 `sales` 來作為字首。

  若要依據不同的金鑰名稱字首，將生命週期動作套用到部分物件，請指定其他規則。請在每項規則中，指定使用字首的篩選條件。例如，若要描述金鑰字首為 `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 物件](object-keys.md)。
+ **依據物件標籤指定篩選條件** – 在下列範例中，生命週期規則會依據標籤 (`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` 合併這些篩選條件。亦即，此規則會套用到其中具有特定金鑰字首與特定標籤的物件子集。篩選條件只能有一個字首，以及零或多個標籤。
+ **指定空的篩選條件** – 您可以指定空的篩選條件，讓規則套用到儲存貯體中的所有物件。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
+ **>指定物件大小篩選條件** – 若要依據物件大小篩選規則，您可以指定大小下限 (`ObjectSizeGreaterThan`) 或大小上限 (`ObjectSizeLessThan`)，或者您可以指定物件大小的範圍。

  物件大小值以位元組為單位。篩選條件大小上限為 50 TB。部分儲存類別擁有物件大小下限限制。如需詳細資訊，請參閱[比較 Amazon S3 儲存方案](storage-class-intro.md#sc-compare)。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>   
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
**注意**  
`ObjectSizeGreaterThan` 和 `ObjectSizeLessThan` 篩選條件會排除指定的值。例如，如果您將大小為 128 KB 的物件設定為 1024 KB，以從 S3 Standard 儲存類別移至 S3 Standard-IA 儲存類別，則剛好為 1024 KB 和 128 KB 的物件將不會轉換為 S3 Standard-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>
  ```