ファイルを無効にするときに知っておくべきこと - Amazon CloudFront

ファイルを無効にするときに知っておくべきこと

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

大文字と小文字の区別

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

Lambda 関数を使用した URI の変更

CloudFront ディストリビューションがビューワーリクエストイベントで Lambda 関数をトリガーして、関数がリクエストされたファイルの URI を変更する場合、CloudFront エッジキャッシュからファイルを削除するために両方の URI を無効にすることを推奨します。

  • ビューワーリクエストの URI

  • 関数による変更後の URI

Lambda 関数が以下のファイルの URI を、

https://d111111abcdef8.cloudfront.net/index.html

言語ディレクトリを含む URI に変更するとします。

https://d111111abcdef8.cloudfront.net/en/index.html

ファイルを無効にするには、次のパスを指定する必要があります。

  • /index.html

  • /en/index.html

詳しくは、「Invalidation paths」を参照してください。

デフォルトのルートオブジェクト

デフォルトルートオブジェクト (ファイル) を無効にする場合、他のファイルのパスを指定する場合と同じ方法でパスを指定します。詳細については、「デフォルトのルートオブジェクトの仕組み」を参照してください。

Cookie の転送

オリジンに Cookie を転送するように CloudFront を設定した場合、CloudFront エッジキャッシュにファイルの複数のバージョンが含まれることがあります。ファイルを無効にすると、CloudFront は、関係付けられた Cookie に関係なく、そのファイルのキャッシュされたあらゆるバージョンを無効にします。一部のバージョンを選択して無効にすることも、関連付けられた Cookie に基づいてその他のバージョンを選択して無効にすることもできません。詳しくは、「Cookie に基づいてコンテンツをキャッシュする」を参照してください。

ヘッダーの転送

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

クエリ文字列の転送

クエリ文字列をオリジンに転送するように CloudFront を設定している場合、次の例に示すように、ファイルを無効にするときにクエリ文字列を含める必要があります。

  • /images/image.jpg?parameter1=a

  • /images/image.jpg?parameter1=b

クライアントリクエストに、同じファイルに対する 5 つの異なるクエリ文字列が含まれる場合、クエリ文字列ごとに 1 回ずつ、5 回を無効にするか、次の例に示すように個別の無効化パスに * ワイルドカードを使用できます。

/images/image.jpg*

無効化パスでのワイルドカードの使用の詳細については、「Invalidation paths」を参照してください。

クエリ文字列の詳細については、「クエリ文字列パラメータに基づいてコンテンツをキャッシュする」を参照してください。

使用中のクエリ文字列を確認するには、CloudFront ログ作成を有効にすることができます。詳しくは、「標準ログ (アクセスログ) の設定および使用」を参照してください。

最大許容数

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

Microsoft Smooth Streaming ファイル

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

パス内の ASCII 以外の文字または安全ではない文字

パスに ASCII 以外の文字が含まれるか、RFC 1738 に規定された安全ではない文字が含まれる場合、その文字を URL エンコードします。パスに含まれる他の文字を URL エンコードしないでください。URL エンコードした場合、CloudFront は、更新されたファイルの旧バージョンを無効にしません。

無効化パス

パスはディストリビューションを基準とする相対パスです。例えば、https://d111111abcdef8.cloudfront.net/images/image2.jpg のファイルを無効にするには、/images/image2.jpg を指定します。

注記

CloudFront コンソールでは、images/image2.jpg のようにパスの先頭のスラッシュを省略できます。CloudFront API を直接使用する場合、無効化パスは先頭にスラッシュを付ける必要があります。

* ワイルドカードを使用して、同時に複数のファイルを無効にすることもできます。0 個以上の文字を置き換える * は、無効化パスの最後の文字である必要があります。

ファイルの無効化に AWS Command Line Interface (AWS CLI) を使用し、* ワイルドカードが含まれるパスを指定する場合は、"/*" のようにパスを引用符 (") で囲む必要があります。

例: 無効化パス
  • ディレクトリ内のすべてのファイルを無効にするには:

    /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*

  • ディストリビューション内のすべてのファイルを無効にするには:

    /*

パスの最大長は 4000 文字です。パス内でワイルドカードを使用することはできません。パスの末尾にのみ追加できます。

Lambda 関数を使用して URI を変更する場合のファイルの無効化の詳細については、「Changing the URI Using a Lambda Function」を参照してください。

無効化パスがディレクトリであり、ディレクトリの指定方法 (末尾のスラッシュ (/) を付けるかどうか) を標準化していない場合、末尾のスラッシュを付けたディレクトリと付けないディレクトリの両方を無効にすることをお勧めします (例: /images および /images/)。

書名付き URL

署名付き URL を使用している場合は、URL の疑問符 (?) の前の部分のみを含めてファイルを無効にします。