メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

オブジェクトの無効化 (ウェブディストリビューションのみ)

有効期限切れになる前に CloudFront エッジキャッシュからオブジェクトを削除する場合、以下のいずれかの処理を行うことができます。

  • エッジキャッシュからオブジェクトを無効にします。エンドユーザーが次にオブジェクトを要求したときに、CloudFront はオリジンに戻ってオブジェクトの最新バージョンをフェッチします。

  • オブジェクトのバージョニングを使用して、異なる名前を持つ異なるバージョンのオブジェクトを供給します。詳細については、「バージョン付きのオブジェクト名を使用した既存オブジェクトの更新」を参照してください。

重要

ウェブディストリビューションで提供されるほとんどの種類は無効にできます。しかし、該当するキャッシュ動作についてスムーズストリーミングを有効にしても、Microsoft スムーズストリーミング形式のメディアファイルを無効にすることはできません。さらに、RTMP ディストリビューションで供給されるオブジェクトを無効にすることはできません。

オブジェクトを無効にするには、個々のオブジェクトのパスまたは * ワイルドカードで終わるパスのいずれかを指定します。これは次の例に示すように、1 つまたは複数のオブジェクトに適用できます。

  • /images/image1.jpg

  • /images/image*

  • /images/*

月ごとに、指定された数の無効化パスを無料で送信できます。月ごとに割り当てられた数より多くの無効化パスを送信する場合、送信する無効化パスごとに料金が発生します。無効化に関する料金の詳細については、「オブジェクトの無効化に対する支払い」を参照してください。

オブジェクトを無効化するか、バージョン付きオブジェクト名を使用するかの選択

ディストリビューションから供給されるオブジェクトのバージョンを制御するには、オブジェクトを無効にするか、バージョン付きファイル名をオブジェクトに設定します。オブジェクトを頻繁に更新する必要がある場合は、以下の理由で、オブジェクトのバージョニングを第一に使用することをお勧めします。

  • バージョニングを使用すると、ローカルにキャッシュされている、または企業のキャッシュプロキシの背後にキャッシュされているバージョンをユーザーが保持している場合でも、リクエストがどのオブジェクトを返すかを制御できます。オブジェクトを無効にした場合、キャッシュ内でオブジェクトが有効期限切れになるまで、ユーザーに旧バージョンが引き続き表示されることがあります。

  • CloudFront アクセスログにオブジェクト名が含まれるので、バージョニングを使用すると、オブジェクトの変更結果の分析が容易になります。

  • バージョニングは、さまざまなバージョンのオブジェクトをさまざまなユーザーに供給する方法を提供します。

  • バージョニングによって、オブジェクトのリビジョン間のロールフォワードとロールバックが簡素化されます。

  • バージョニングのほうがコストが安くなります。CloudFront が新しいバージョンのオブジェクトをエッジロケーションに転送することに関して料金を支払う必要がありますが、オブジェクトの無効化に関して料金を支払う必要はありません。

オブジェクトのバージョニングの詳細については、「バージョン付きのオブジェクト名を使用した既存オブジェクトの更新」を参照してください。

無効にするオブジェクトの決定

ディレクトリ内のすべてのオブジェクトや、名前が同じ文字で始まるすべてのオブジェクトなど、複数のオブジェクトを無効にする場合は、無効化パスの末尾に * ワイルドカードを含めることができます。* ワイルドカードの使用の詳細については、「Invalidation paths」を参照してください。

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

無効にするオブジェクトの指定

オブジェクトを無効にするために使用するのが、CloudFront コンソールまたは CloudFront API かにかかわらず、オブジェクトを指定するための要件と制限は同じです。無効にするオブジェクトの指定時には、以下の事項に注意してください。

大文字と小文字の区別

無効化パスでは大文字と小文字が区別されます。そのため、/images/image.jpg/images/Image.jpg は 2 つの異なるオブジェクトを指定したことになります。

Lambda 関数を使用して URI を変更する

CloudFront ディストリビューションがビューワーリクエストイベントで Lambda 関数をトリガーして、関数がリクエストされたオブジェクトの URI を変更する場合、CloudFront エッジキャッシュからオブジェクトを削除するために両方の URI を無効にする必要があります。

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

  • 関数による変更後の URI

たとえば、Lambda 関数が以下のオブジェクトの URI を変更して、

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

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

http://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 はオブジェクトをキャッシュしません)。詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront を設定する」を参照してください。

クエリ文字列の転送

クエリ文字列をオリジンに転送するように CloudFront を構成している場合、次の例に示すように、オブジェクトを無効にするときにクエリ文字列を含める必要があります。

  • images/image.jpg?parameter1=a

  • images/image.jpg?parameter1=b

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

/images/image.jpg*

無効化パスでのワイルドカードの使用の詳細については、「Invalidation paths」を参照してください。クエリ文字列の詳細については、「クエリ文字列パラメータに基づいてキャッシュするように CloudFront を設定する」を参照してください。使用中のクエリ文字列を確認するには、CloudFront ログ作成を有効にすることができます。詳細については、「アクセスログ」を参照してください。

制限

無効化の制限については、「無効化の制限」を参照してください。

Microsoft Smooth Streaming ファイル

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

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

パスに ASCII 以外の文字が含まれるか、RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt) に規定された安全でない文字が含まれる場合、その文字を URL エンコードします。パスに含まれる他の文字を URL エンコードしないでください。URL エンコードした場合、CloudFront は、更新されたオブジェクトの旧バージョンを無効にしません。

無効化パス

パスはディストリビューションを基準とする相対パスです。先頭の / はオプションです。たとえば、http://d111111abcdef8.cloudfront.net/images/image2.jpg のオブジェクトを無効にするには、次のように指定します。

/images/image2.jpg

または

images/image2.jpg

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

  • ディレクトリ内のすべてのオブジェクトを無効にするには:

    /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」を参照してください。

無効化パスを送信する料金は、無効にするオブジェクトの数に関係なく同じです。つまり、1 つのオブジェクト (/images/logo.jpg) であっても、ディストリビューションに関連付けらたすべてのオブジェクト (/*) であっても同じです。詳細については、「Amazon CloudFront 料金表」を参照してください。

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

書名付き URL

署名付き URL を使用している場合は、URL の疑問符 (?) の前の部分のみを含めてオブジェクトを無効にします。

オブジェクトの無効化および無効化に関する情報の表示

CloudFront コンソールまたは CloudFront API アクションを使用して、無効化の作成と実行、以前に送信された無効化のリストの表示、および個々の無効化に関する詳細情報の表示を行うことができます。また、既存の無効化のコピー、オブジェクトパスのリストの編集、および編集された無効化の実行を行うこともできます。

該当のトピックを参照してください。

CloudFront コンソールを使用したオブジェクトの無効化

CloudFront コンソールを使用してオブジェクトを無効にするには、次の手順に従います。

CloudFront コンソールを使用してオブジェクトを無効にするには

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

  2. 無効にするオブジェクトのディストリビューションを選択します。

  3. [Distribution Settings] を選択します。

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

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

  6. 無効にするオブジェクトについて、1 行ごとに 1 つの無効化パスを入力します。無効パスの指定の詳細については、「無効にするオブジェクトの指定」を参照してください。

    重要

    オブジェクトパスを慎重に指定します。無効化リクエストは開始後にキャンセルすることはできません。

  7. [Invalidate] を選択します。

CloudFront コンソールを使用した既存の無効化のコピー、編集、および再実行

以前に作成した無効化をコピーし、無効化パスのリストを更新して、更新した無効化を実行することができます。既存の無効化をコピーし、無効化パスを更新して、更新した無効化を実行せずに保存することはできません。

重要

進行中の無効化をコピーし、無効化パスのリストを更新して、更新した無効化を実行した場合、コピーした無効化を CloudFront が停止または削除することはありません。ある無効化パスがオブジェクトとコピーの両方に含まれる場合、CloudFront はこのオブジェクトの無効化を 2 回試みます。この 2 回の無効化は月ごとの無料の無効化の最大数に対してカウントされます。無料で行うことができる無効化の最大数にすでに達している場合は、各オブジェクトの両方の無効化に対して料金が発生します。詳細については、「無効化の制限」を参照してください。

CloudFront コンソールを使用して、既存の無効化のコピー、編集、および再実行を行う

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

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

  3. [Distribution Settings] を選択します。

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

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

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

  6. [Copy] を選択します。

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

  8. [Invalidate] を選択します。

無効化のキャンセル

CloudFront に無効化リクエストを送信すると、そのリクエストは数秒以内にすべてのエッジロケーションに転送されて、各エッジロケーションで直ちに無効化の処理が開始されます。そのため、無効化を送信後にキャンセルすることはできません。

CloudFront コンソールを使用した無効化のリストの表示

コンソールを使用して、ディストリビューションにおいて作成および実行された最後の 100 個の無効化のリストを表示できます。100 個を超える無効化のリストを取得する場合は、GET Invalidation List API アクションを使用します。詳細については、『Amazon CloudFront API リファレンス』の「GET Invalidation List」を参照してください。

CloudFront コンソールを使用して、無効化のリストを表示するには

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

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

  3. [Distribution Settings] を選択します。

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

CloudFront コンソールを使用して無効化に関する情報を表示する

ディストリビューション ID、無効化 ID、無効化のステータス、無効化が作成された日時、無効化パスの完全リストを含め、無効化に関する詳細情報を表示できます。

CloudFront コンソールを使用して、無効化に関する情報を表示するには

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

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

  3. [Distribution Settings] を選択します。

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

  5. 該当する無効化を選択します。

  6. [Details] を選択します。

CloudFront API を使用したオブジェクトの無効化および無効化に関する情報の表示

オブジェクトの無効化に関する情報、および CloudFront API, を使用して無効化に関する情報を表示する方法については、「Amazon CloudFront API リファレンス」の該当するトピックを参照してください。

オブジェクトを無効にするためのサードパーティツール

CloudFront から提供される無効化方法に加えて、いくつかのサードパーティツールでオブジェクトを無効にするための方法が提供されます。ツールのリストについては、「オブジェクトの無効化」を参照してください。

無効化の制限

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

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

オブジェクトの無効化に対する支払い

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

1 か月あたり 1000 個の無効化パスの上限は、1 つの AWS アカウントで作成するすべてのディストリビューションの無効化パスの合計数に対して適用されます。たとえば、AWS アカウント john@example.com を使用して 3 個のディストリビューションを作成し、ある月に、各ディストリビューションに 600 個の無効化パス (合計で 1,800 個の無効化パス) を送信しました。この場合、AWS は、その月に 800 個の無効化パスに対して料金を請求します。無効化の料金表に関する具体的な情報については、「Amazon CloudFront 料金表」を参照してください。無効化パスの詳細については、「Invalidation paths」を参照してください。