

# ファイルを無効化してコンテンツを削除する
<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)」を参照してください。

ファイルを無効にするには、個々のファイルのパスまたは `*` ワイルドカードで終わるパスのいずれかを指定します。これは次の例に示すように、1 つまたは複数のファイルに適用できます。
+ `/images/image1.jpg`
+ `/images/image*`
+ `/images/*`

選択されたファイルを無効にする必要があり、ユーザーがオリジンのすべてのファイルに必ずしもアクセスしない場合は、ビューワーが CloudFront からどのファイルを要求したかを確認し、そのファイルのみを無効にできます。ビューワーがどのファイルを要求したかを確認するには、CloudFront アクセスログの作成を有効にします。アクセスログの詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

# ファイルを無効にするときに知っておくべきこと
<a name="invalidation-specifying-objects"></a>

無効にするファイルを指定するときには、次の情報を参照してください。

**大文字と小文字の区別**  
無効化パスでは大文字と小文字が区別されます。例えば、`/images/image.jpg` と `/images/Image.jpg` は 2 つの異なるファイルを指定します。

**Lambda 関数を使用した URI の変更**  
CloudFront ディストリビューションがビューワーリクエストイベントで Lambda 関数をトリガーして、関数がリクエストされたファイルの URI を変更する場合、CloudFront エッジキャッシュからファイルを削除するために両方の URI を無効にすることを推奨します。  
+ ビューワーリクエストの 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 の転送**  
オリジンに Cookie を転送するように CloudFront を設定した場合、CloudFront エッジキャッシュにファイルの複数のバージョンが含まれることがあります。ファイルを無効にすると、CloudFront は、関係付けられた Cookie に関係なく、そのファイルのキャッシュされたあらゆるバージョンを無効にします。一部のバージョンを選択して無効にすることも、関連付けられた Cookie に基づいてその他のバージョンを選択して無効にすることもできません。詳しくは、「[Cookie に基づいてコンテンツをキャッシュする](Cookies.md)」を参照してください。

 **ヘッダーの転送**  
ヘッダーのホワイトリストをオリジンに転送し、ヘッダーの値に基づいてキャッシュするように CloudFront を設定した場合、CloudFront エッジキャッシュにファイルの複数のバージョンが含むまれることがあります。ファイルを無効にすると、CloudFront は、ヘッダー値に関係なく、そのファイルのキャッシュされたあらゆるバージョンを無効にします。ヘッダー値に基づいて一部のバージョンのみ選択して無効にすることはできません (すべてのヘッダーをオリジンに転送するように CloudFront を設定した場合、CloudFront はファイルをキャッシュしません)。詳しくは、「[リクエストヘッダーに基づいてコンテンツをキャッシュする](header-caching.md)」を参照してください。

 **クエリ文字列の転送**  
クエリ文字列をオリジンに転送するように CloudFront を設定している場合、次の例に示すように、ファイルを無効にするときにクエリ文字列を含める必要があります。  
+ `/images/image.jpg?parameter1=a`
+ `/images/image.jpg?parameter1=b`
クライアントリクエストに、同じファイルに対する 5 つの異なるクエリ文字列が含まれる場合、クエリ文字列ごとに 1 回ずつ、5 回を無効にするか、次の例に示すように個別の無効化パスに \$1 ワイルドカードを使用できます。  
`/images/image.jpg*`  
無効化パスでのワイルドカードの使用の詳細については、「[Invalidation paths](#invalidation-specifying-objects-paths)」を参照してください。  
クエリ文字列の詳細については、「[クエリ文字列パラメータに基づいてコンテンツをキャッシュする](QueryStringParameters.md)」を参照してください。  
使用中のクエリ文字列を確認するには、CloudFront ログ作成を有効にすることができます。詳しくは、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

**最大許容数**  
許可される無効化の最大許容値については、「[同時無効化リクエストの最大制限](InvalidationLimits.md)」を参照してください。

 **Microsoft Smooth Streaming ファイル**  
対応するキャッシュ動作に対してスムーズストリーミングを有効にした場合は、Microsoft Smooth Streaming 形式のメディアファイルを無効にすることはできません。

 **パス内の ASCII 以外の文字または安全ではない文字**  
パスに ASCII 以外の文字が含まれるか、[RFC 1738](https://tools.ietf.org/html/rfc1738) に規定された安全ではない文字が含まれる場合、その文字を URL エンコードします。パスに含まれる他の文字を URL エンコードしないでください。URL エンコードした場合、CloudFront は、更新されたファイルの旧バージョンを無効にしません。  
パスに `~` 文字を使用しないでください。CloudFront は、URL エンコードされているかどうかにかかわらず、この文字の無効化をサポートしていません。

 **無効化パス**  
パスはディストリビューションを基準とする相対パスです。例えば、`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) を使用し、`*` ワイルドカードが含まれるパスを指定する場合は、`"/*"` のようにパスを引用符 (`"`) で囲む必要があります。  
パスの最大長は 4000 文字です。  

**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/`)。

**書名付き 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 マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 無効にするファイルのディストリビューションを選択します。

1. [**Invalidations**] タブを選択します。

1. [**Create Invalidation**] を選択します。

1. 無効にするファイルについて、1 行ごとに 1 つの無効化パスを入力します。無効パスの指定の詳細については、「[ファイルを無効にするときに知っておくべきこと](invalidation-specifying-objects.md)」を参照してください。
**重要**  
ファイルパスを慎重に指定します。無効化リクエストは開始後にキャンセルすることはできません。

1. [**Create Invalidation**] を選択します。

------
#### [ 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 はこのファイルの無効化を 2 回試みます。この 2 回の無効化は月ごとの無料の無効化の最大数に対してカウントされます。無料で行うことができる無効化の最大数に既に達している場合は、各ファイルの両方の無効化に対して料金が発生します。詳細については、「[同時無効化リクエストの最大制限](InvalidationLimits.md)」を参照してください。<a name="invalidating-objects-copy-console-procedure"></a>

**既存の無効化のコピー、編集、および再実行を行うには**

1. AWS マネジメントコンソール にサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. コピーする無効化が含まれるディストリビューションを選択します。

1. [**Invalidations**] タブを選択します。

1. コピーする無効化を選択します。

   コピーする無効化が不明な場合は、無効化を選択し、[**View details**] を選択すると、その無効化の詳細情報が表示されます。

1. **[新規にコピー]** を選択します。

1. 必要に応じて、無効化パスのリストを更新します。

1. [**Create Invalidation**] を選択します。

## 無効化をキャンセルする
<a name="canceling-invalidations"></a>

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 マネジメントコンソール にサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 無効化リストの表示の対象となるディストリビューションを選択します。

1. [**Invalidations**] タブを選択します。

**注記**  
無効化をリストから削除することはできません。

## 無効化に関する情報を表示する
<a name="invalidation-details-console"></a>

ディストリビューション ID、無効化 ID、無効化のステータス、無効化が作成された日時、無効化パスの完全リストを含め、無効化に関する詳細情報を表示できます。<a name="invalidation-details-console-procedure"></a>

**無効化に関する情報を表示するには**

1. AWS マネジメントコンソール にサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 詳細情報の表示の対象となる無効化が含まれるディストリビューションを選択します。

1. [**Invalidations**] タブを選択します。

1. 該当する無効化 ID を選択するか、無効化 ID を選択してから、[**詳細を表示**] を選択します。

# 同時無効化リクエストの最大制限
<a name="InvalidationLimits"></a>

ファイルを個別に無効にする場合は、進行中のディストリビューションごとに最大 3,000 個のファイルまで、一度に無効化リクエストを作成できます。これは、最大 3,000 個のファイルに対する 1 つの無効化リクエスト、1 つのファイルに対する最大 3,000 個のリクエスト、または 3,000 個のファイルを超えないその他の任意の組み合わせとすることができます。たとえば、それぞれ 100 個のファイルを無効にする 30 個の無効化リクエストを送信できます。30 個の無効化リクエストがすべてまだ実行中である限り、それ以上の無効化リクエストを送信することはできません。この最大制限を超えた場合、CloudFront はエラーメッセージを返します。

\$1 ワイルドカードを使用している場合、最大 15 個の無効化パスのリクエストを一度に作成できます。また、進行中のディストリビューションごとに最大 3,000 個の個別のファイルを同時に作成することができます。ワイルドカードの無効化リクエストの最大制限は、ファイルの個別の無効化の最大制限とは無関係です。

# ファイルの無効化に対する支払い
<a name="PayingForInvalidation"></a>

1 か月に送信した無効化パスのうち、最初の 1,000 件は無料です。1 か月に 1,000 件を超えると、無効化パス 1 件ごとに支払いが発生します。無効なパスは 1 つのファイル (`/images/logo.jpg` など) に対して、または複数のファイル (`/images/*`) に対して発生する場合があります。CloudFront が無数のファイルを無効にした場合でも、ワイルドカード `*` は 1 つのパスとして含まれます。

1 か月あたり 1,000 個の無料の無効化パスの上限は、1 つの AWS アカウントで作成するすべてのディストリビューションの無効化パスの合計数に対して適用されます。例えば、AWS アカウント `john@example.com` を使用して 3 個のディストリビューションを作成し、ある月に、*各ディストリビューション*に 600 個の無効化パス (合計で 1,800 個の無効化パス) を送信した場合、AWS は、無効化パスの合計数と 1,000 個の無料制限との差額を請求します。この例では、AWS はその月に 800 の無効化パスに対して課金します。

無効化パスを送信する料金は、無効にするファイルの数に関係なく同じです。つまり、1 つのファイル (`/images/logo.jpg`) であっても、ディストリビューションに関連付けられたすべてのファイル (`/*`) であっても同じです。無効化リクエストではパスごとに課金されるため、複数のパスを 1 つのリクエストにまとめた場合でも、請求の目的においては各パスが依然として個別にカウントされます。

無効化の料金に関する詳細情報については、「[Amazon CloudFront 料金表](https://aws.amazon.com/cloudfront/pricing/)」を参照してください。無効化パスの詳細については、「[Invalidation paths](invalidation-specifying-objects.md#invalidation-specifying-objects-paths)」を参照してください。