

# ファイルを無効にするときに知っておくべきこと
<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 の疑問符 (?) の前の部分のみを含めてファイルを無効にします。