

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

# 使檔案失效以移除內容
<a name="Invalidation"></a>

若您需要在檔案過期之前將其從 CloudFront 邊緣快取移除，則可執行以下其中一項：
+ 透過節點快取使該檔案失效。下次若有檢視器請求該檔案，CloudFront 將傳回原始伺服器以擷取檔案的最新版本。
+ 使用檔案版本控制以提供該檔案具有不同名稱的不同版本。如需詳細資訊，請參閱[使用版本控制的檔案名稱更新現有檔案](UpdatingExistingObjects.md#ReplacingObjects)。

**Topics**
+ [

## 選擇要使檔案失效或者使用版本控制的檔案名稱
](#Invalidation_Expiration)
+ [

# 確定要失效的檔案
](invalidation-access-logs.md)
+ [

# 讓檔案失效時的注意事項
](invalidation-specifying-objects.md)
+ [

# 使檔案失效
](Invalidation_Requests.md)
+ [

# 並行失效請求上限
](InvalidationLimits.md)
+ [

# 支付檔案失效的費用
](PayingForInvalidation.md)

## 選擇要使檔案失效或者使用版本控制的檔案名稱
<a name="Invalidation_Expiration"></a>

若要控制從分佈中提供的檔案版本，您可使檔案失效或以版本控制的檔案名稱為其命名。如果您想經常更新檔案，建議您主要使用檔案版本控制，原因如下：
+ 版本控制可讓您控制請求傳回哪些檔案，甚至是使用者什麼時候在本地或在企業快取代理之後快取一個版本。如果您使該檔案失效，使用者可能會繼續看到舊版本，直到檔案從這些快取中過期。
+ CloudFront 存取日誌包含檔案的名稱，所以版本控制能讓您更輕鬆地分析檔案變更的結果。
+ 版本控制讓您可向不同的使用者提供不同版本的檔案。
+ 版本控制簡化了檔案修訂版本之間的往返復原。
+ 版本控制更便宜。將新版本的檔案傳輸到節點仍需要支付 CloudFront 費用，而使檔案失效則不必支付任何費用。

如需檔案版本控制的詳細資訊，請參閱[使用版本控制的檔案名稱更新現有檔案](UpdatingExistingObjects.md#ReplacingObjects)。

# 確定要失效的檔案
<a name="invalidation-access-logs"></a>

若您要使多個檔案失效，例如某個目錄中的所有檔案，或者檔名以相同字元開頭的所有檔案，則可在失效路徑的結尾包含 `*` 萬用字元。如需有關使用 `*` 萬用字元的詳細資訊，請參閱[Invalidation paths](invalidation-specifying-objects.md#invalidation-specifying-objects-paths)。

若要使檔案失效，您可以指定個別檔案的路徑或以 `*` 萬用字元結尾的路徑，其可能會套用到一個或多個檔案，如以下範例所示：
+ `/images/image1.jpg`
+ `/images/image*`
+ `/images/*`

如果您想要使選定的檔案失效，但使用者不需要存取原始伺服器上的每個檔案，則您可以判斷檢視器向 CloudFront 要求了哪些檔案，並只讓這些檔案失效。若要判斷檢視器要求了哪些檔案，請啟用 CloudFront 存取記錄。如需存取日誌的詳細資訊，請參閱[存取日誌 （標準日誌）](AccessLogs.md)。

# 讓檔案失效時的注意事項
<a name="invalidation-specifying-objects"></a>

當您指定要失效的檔案時，請參閱下列資訊：

**區分大小寫**  
失效路徑區分大小寫。例如，`/images/image.jpg` 和 `/images/Image.jpg` 指定兩個不同的檔案。

**使用 Lambda 函數變更 URI**  
如果您的 CloudFront 分佈在檢視器請求事件中觸發 Lambda 函數，而且該函數變更了請求檔案的 URI，我們建議您使以下兩種 URI 失效，以便從 CloudFront 邊緣快取中移除檔案：  
+ 在檢視器請求中的 URI
+ 函數予以變更之後的 URI

**Example 範例**  
例如，假設您的 Lambda 函數變更了檔案的 URI，而其原本為：  
`https://d111111abcdef8.cloudfront.net/index.html`  
到包含語言目錄的 URI：  
`https://d111111abcdef8.cloudfront.net/en/index.html`  
若要使該檔案失效，您必須指定以下路徑：  
+ `/index.html`
+ `/en/index.html`
如需詳細資訊，請參閱[Invalidation paths](#invalidation-specifying-objects-paths)。

**預設根物件**  
若要使預設根物件 (檔案) 失效，請以您為任何其他檔案指定路徑的相同方式指定其路徑。如需詳細資訊，請參閱[預設根物件的運作方式](DefaultRootObject.md#DefaultRootObjectHow)。

 **轉送 Cookie**  
如果您配置 CloudFront 轉送 Cookie 到原始伺服器，則 CloudFront 邊緣快取可能包含檔案的多個版本。當您使檔案失效後，CloudFront 會使該檔案的每個快取版本皆失效，無論其是否與 Cookie 關聯。您無法根據關聯的 Cookie 選擇性地使某些版本而不是其他版本失效。如需詳細資訊，請參閱[根據 Cookie 快取內容](Cookies.md)。

 **Forwarding headers** (轉送標頭)  
如果您配置 CloudFront 轉送標頭清單到原始伺服器，並且根據標頭的值進行快取，則 CloudFront 邊緣快取可能包含檔案的多個版本。當您使檔案失效後，CloudFront 會使該檔案的每個快取版本皆失效，無論其標頭值為何。您無法根據標頭值選擇性地使某些版本而不是其他版本失效。(如果您將 CloudFront 配置為將所有標頭轉送到原始伺服器，CloudFront 不會快取您的檔案。) 如需詳細資訊，請參閱[根據請求標頭快取內容](header-caching.md)。

 **轉送查詢字串**  
如果您配置 CloudFront 轉送查詢字串至原始伺服器，使檔案失效時您必須包含查詢字串，如以下範例所示：  
+ `/images/image.jpg?parameter1=a`
+ `/images/image.jpg?parameter1=b`
如果用戶端請求包含針對同一檔案的五種不同查詢字串，則您可以使該檔案失效五次，每一查詢字串一次，或者也可在失效路徑中使用 \$1 萬用字元，如以下範例所示：  
`/images/image.jpg*`  
如需有關在失效路徑使用萬用字元的詳細資訊，請參閱[Invalidation paths](#invalidation-specifying-objects-paths)。  
如需查詢字串的詳細資訊，請參閱[根據查詢字串參數快取內容](QueryStringParameters.md)。  
若要判斷哪些查詢字串使用中，您可以啟用 CloudFront 記錄功能。如需詳細資訊，請參閱[存取日誌 （標準日誌）](AccessLogs.md)。

**允許的上限**  
如需允許的失效數量上限詳細資訊，請參閱 [並行失效請求上限](InvalidationLimits.md)。

 **Microsoft Smooth Streaming file** (Microsoft Smooth Streaming 檔案)  
當您已啟用對應快取行為的 Smooth Streaming 時，您不能使 Microsoft Smooth Streaming 格式中的媒體檔案失效。

 **Non-ASCII or unsafe characters in the path** (路徑中非 ASCII 或不安全字元)  
如果路徑包含非 ASCII 字元或 [RFC 1738](https://tools.ietf.org/html/rfc1738) 中定義的不安全字元，請將這些字元進行 URL 編碼。切勿對路徑中的任何其他字元進行 URL 編碼，否則 CloudFront 不會使更新後檔案的舊版本失效。  
請勿在路徑中使用 `~` 字元。CloudFront 不支援此字元的失效，無論其是否為 URL 編碼。

 **Invalidation paths** (失效路徑)  
路徑與分佈有關。例如，要使在 `https://d111111abcdef8.cloudfront.net/images/image2.jpg` 的檔案失效，您可以指定 `/images/image2.jpg`。  
在 [CloudFront 主控台](https://console.aws.amazon.com/cloudfront/v4/home)中，您可以省略路徑中的前導斜線，如：`images/image2.jpg`。直接使用 CloudFront API 時，無效驗證路徑須以前綴斜線開頭。
您也可以使用 `*` 萬用字元使多個檔案同時失效。取代 0 或多個字元的 `*`，必須是失效路徑的最後一個字元。  
若要在失效中使用萬用字元 (\$1)，您必須將萬用字元放在路徑尾端。插入其他任何位置的星號 (\$1) 都會視為常值字元相符，而不是萬用字元失效。
如果您使用 AWS Command Line Interface (AWS CLI) 使檔案失效，並指定包含`*`萬用字元的路徑，則必須在類似 的路徑周圍使用引號 (`"`)`"/*"`。  
路徑的長度上限為 4,000 個字元。  

**Example 範例：失效路徑**  
+ 使某個目錄中的所有檔案失效：

  `/`*directory-path*`/*` (目錄路徑)
+ 若要使某個目錄、其所有子目錄以及該目錄與子目錄中的所有檔案失效：

  `/`*directory-path*`*` (目錄路徑)
+ 為了使所有名稱相同，但不同的檔案名稱延伸的檔案失效，例如 logo.jpg、logo.png 和 logo.gif：

  `/`*directory-path* (目錄路徑) `/`*file-name* (檔案名稱) `.*`
+ 無論檔案名稱延伸如何，若要使檔案名稱以相同字元開頭的目錄中的所有檔案（例如 HLS 格式中影片的所有檔案）失效：

  `/`*directory-path* (目錄路徑) `/`*initial-characters-in-file-name* (檔案名稱中的初始字元) `*`
+ 當您配置 CloudFront 根據查詢字串參數進行快取時，要使檔案的每個版本皆失效：

  `/`*directory-path* (目錄路徑) `/`*file-name* (檔案名稱) `.`*file-name-extension* (檔案名稱延伸) `*`
+ 使分佈中的所有檔案失效：

  `/*`
如需使用 Lambda 函數變更 URI 的情況下使檔案失效的詳細資訊，請參閱[Changing the URI Using a Lambda Function](#invalidation-lambda-at-edge)。  
如果失效路徑是一個目錄且如果您尚未標準化指定目錄的方法 (包含或不含結尾斜線 (/))，我們建議您，讓包含及不包含結尾斜線的目錄皆失效，例如 `/images` 和 `/images/`。

**Signed URLs** (簽署的 URL)  
如果您使用已簽章的 URL，則透過僅包含問號 (？) 前面的 URL 部分以使檔案失效。

# 使檔案失效
<a name="Invalidation_Requests"></a>

您可以使用 CloudFront 主控台來建立與執行失效，顯示您之前提交的失效清單，以及顯示有關個別失效的詳細資訊。您也可以複製現有的失效、編輯檔案路徑的清單和執行已編輯的失效。您可以從清單移除失效。

**Contents**
+ [

## 使檔案失效
](#invalidating-objects-console)
+ [

## 複製、編輯和重新執行現有的失效
](#invalidating-objects-copy-console)
+ [

## 取消失效
](#canceling-invalidations)
+ [

## 列出失效
](#listing-invalidations-console)
+ [

## 顯示有關失效的資訊
](#invalidation-details-console)

## 使檔案失效
<a name="invalidating-objects-console"></a>

若要使用 CloudFront 主控台使檔案失效，請執行以下步驟。

------
#### [ Console ]<a name="invalidating-objects-console-procedure"></a>

**使檔案失效 (主控台)**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 選擇您欲使其檔案失效的分佈。

1. 請選擇 **Invalidations (失效)** 索引標籤。

1. 請選擇**建立失效**。

1. 針對您要使其失效的檔案，每行輸入一個失效路徑。如需有關指定失效路徑的詳細資訊，請參閱[讓檔案失效時的注意事項](invalidation-specifying-objects.md)。
**重要**  
請謹慎指定檔案路徑。開始後便無法取消失效請求。

1. 請選擇**建立失效**。

------
#### [ CloudFront API ]

如需了解使物件失效及顯示與失效相關資訊的詳細資訊，請參閱《Amazon CloudFront API 參考》**的以下主題：
+ [CreateInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html) 
+ [ListInvalidations](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListInvalidations.html)
+ [GetInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetInvalidation.html)

**注意**  
如果您使用 AWS Command Line Interface (AWS CLI) 使檔案失效，並指定包含`*`萬用字元的路徑，則必須在路徑周圍使用引號 (`"`)，例如下列範例：  

```
aws cloudfront create-invalidation --distribution-id distribution_ID --paths "/*"
```

------

## 複製、編輯和重新執行現有的失效
<a name="invalidating-objects-copy-console"></a>

您可以複製您之前建立的失效、更新失效路徑的清單，並執行已更新的失效。您不能複製現有的失效、更新失效路徑，接著儲存更新的失效且無需執行。

**重要**  
如果您在失效進行中複製失效、更新失效路徑清單，並接著執行更新的失效，CloudFront 不會停止或刪除您複製的失效。若有任何失效路徑出現在原始伺服器本和複本中，CloudFront 會嘗試使檔案失效兩次，且這兩次失效均將計入您每個月免費的失效數上限。如果您已達到免費的失效數上限，即將支付每個檔案兩次失效的費用。如需詳細資訊，請參閱[並行失效請求上限](InvalidationLimits.md)。<a name="invalidating-objects-copy-console-procedure"></a>

**複製、編輯和重新執行現有的失效**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 請選取包含您欲複製的失效的分佈。

1. 請選擇 **Invalidations (失效)** 索引標籤。

1. 選擇您想要複製的失效。

   如果您不確定要複製哪個失效，可以選擇一個失效並選擇**檢視詳細資訊**以顯示有關失效的詳細資訊。

1. 選擇**複製到新的**。

1. 如果適用，請更新失效路徑清單。

1. 請選擇**建立失效**。

## 取消失效
<a name="canceling-invalidations"></a>

當您提交失效請求到 CloudFront 時，CloudFront 幾秒鐘內便轉送請求到所有節點，且每個節點立即開始處理失效。因此，提交後便無法取消失效。

## 列出失效
<a name="listing-invalidations-console"></a>

您可以使用 CloudFront 主控台，顯示過去您已建立且執行分佈的 100 個失效的清單。如果您想要取得超過 100 個失效的清單，請使用 `ListInvalidations` API 操作。如需詳細資訊，請參閱 *Amazon CloudFront API 參考*中的 [ListInvalidations](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListInvalidations.html)。<a name="listing-invalidations-console-procedure"></a>

**列出失效**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 請選取欲顯示失效清單的分佈。

1. 請選擇 **Invalidations (失效)** 索引標籤。

**注意**  
您無法從清單移除失效。

## 顯示有關失效的資訊
<a name="invalidation-details-console"></a>

您可以顯示有關失效的詳細資訊，包括分佈 ID、失效 ID、失效的狀態、建立失效的日期和時間，以及失效路徑的完整清單。<a name="invalidation-details-console-procedure"></a>

**顯示有關失效的資訊**

1. 登入 AWS 管理主控台 ，並在 開啟 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 請選取包含您欲顯示詳細資訊的失效的分佈。

1. 請選擇 **Invalidations (失效)** 索引標籤。

1. 選擇適用的失效 ID 或選擇失效 ID，然後選擇**檢視詳細資訊**。

# 並行失效請求上限
<a name="InvalidationLimits"></a>

如果您使檔案逐個失效，則每個進行中的分佈可同時請求最多 3,000 個檔案失效。一次失效請求最多可達 3,000 個檔案，或針對單一檔案請求 3,000 次，或者總計不超過 3,000 個檔案的任何組合方式。例如，您可以提交 30 次失效請求，每次使 100 個檔案失效。只要 30 個失效請求都仍在進行中，您就無法提交任何更多的失效請求。如果超過上限，CloudFront 會傳回錯誤訊息。

如果您使用 \$1 萬用字元，則每次進行中都可以請求最多 15 個失效路徑。您也可以就每一進行中的分佈同時請求失效最多 3,000 個檔案；萬用字元失效請求允許的上限與檔案逐個失效的上限無關。

# 支付檔案失效的費用
<a name="PayingForInvalidation"></a>

您每月提交的前 1,000 個失效路徑免費；您只需支付每月超過 1,000 個的每一失效路徑。每一失效路徑可適用於單一檔案 (如 `/images/logo.jpg`) 或多個檔案 (如 `/images/*`)。包含 `*` 萬用字元的路徑即便導致 CloudFront 使數千個檔案失效，也算作一個路徑。

每月 1,000 個免費失效路徑的上限適用於您建立一個 AWS 帳戶中所有分佈的失效路徑總數。例如，如果您使用 AWS 帳戶 `john@example.com`建立三個分佈，並在指定月份*為每個分佈*提交 600 個失效路徑 （總共 1，800 個失效路徑）， AWS 會向您收取失效路徑總數與 1000 個免費限制之間的差異。在此範例中， AWS 會在該月向您收取 800 個失效路徑的費用。

無論您要使之失效的檔案有多少，單一檔案 (`/images/logo.jpg`) 還是所有與分佈關聯的檔案 (`/*`)，提交失效路徑的費用皆相同。由於您失效請求中的每個路徑都會向您收費，即使您將多個路徑綁定到單一請求中，每個路徑仍會個別計入計費目的。

如需無效定價的詳細資訊，請參閱 [Amazon CloudFront 定價](https://aws.amazon.com/cloudfront/pricing/)。如需有關失效路徑的詳細資訊，請參閱[Invalidation paths](invalidation-specifying-objects.md#invalidation-specifying-objects-paths)。