スキップしてコンテンツを表示

CloudFront から、Amazon S3 の過去コンテンツが配信される原因を教えてください。

所要時間1分
0

Amazon CloudFront を使用して Amazon Simple Storage Service (Amazon S3) に保存されているオブジェクトを提供しています。Amazon S3 内のオブジェクトを更新したのですが、CloudFront ディストリビューションは依然として、過去バージョンのファイルを提供しています。

簡単な説明

デフォルトでは、CloudFront は Amazon S3 からの応答を 24 時間 (デフォルト TTL である 86,400 秒) キャッシュします。24 時間以内に Amazon S3 レスポンスを処理したエッジロケーションにリクエストが届いた場合、CloudFront はキャッシュされたレスポンスを使用します。この挙動は、Amazon S3 のコンテンツを更新した場合も同様です。

最新の Amazon S3 コンテンツを CloudFront からプッシュするには、次のいずれかの手法を実施します。

解決策

Amazon S3 オブジェクトを無効化する

Amazon S3 オブジェクトを無効化すると、CloudFront ディストリビューションのキャッシュから削除できます。オブジェクトをキャッシュから削除すると、次のリクエストでは、Amazon S3 から直接オブジェクトを取得します。

:

  • Cookie やヘッダーを使用して応答を変更するオブジェクトでは、特定のバージョンを無効にすることはできません。この場合、CloudFront はオブジェクトのすべてのバージョンを無効にします。
  • 各 AWS アカウントには、1 か月あたり 1,000 の無料無効化パスが許可されています。詳細については、「Amazon CloudFront の料金表」を参照してください。

無効化を行う際は、オブジェクトパスが次の要件を満たしていることを確認してください。

  • オブジェクトパスは、個別のオブジェクトを指定するか、ワイルドカード文字 (\ *) で終わる必要があります。たとえば、パスを /images/*.jpeg のような形式で指定した場合は、無効化を実行できません。パスは別個のオブジェクトを指しておらず、末尾はワイルドカード文字ではないため、要件を満たしていません。
  • 指定するパスは、オブジェクトパスで使用する大文字および小文字と完全に一致する必要があります。無効化リクエストでは大文字と小文字が区別されます。
  • クエリ文字列に基づいてオブジェクトの特定のバージョンを削除するには、無効化パスにクエリ文字列パラメータを含めます。

オブジェクトの無効化は、通常 10 ~ 100 秒で完了します。無効化のステータスを確認するには、CloudFront コンソールでディストリビューションを表示します。

ファイルのバージョニングを使用する

コンテンツを頻繁に更新する場合は、オブジェクトのバージョニングを使用して CloudFront ディストリビューションのキャッシュをクリアすることをおすすめします。キャッシュを頻繁に更新する場合、ファイルのバージョニングを行うと、無効化と比較してコストを削減できる可能性があります。

ファイルのバージョニングを使用するには、次の手順を実行します。

  • キー名にバージョン番号を付与し、オブジェクトの新しいバージョンをオリジンに保存します。たとえば、/image_v1.png を更新する場合、オブジェクトの新しいバージョンを /image_v2.png として保存します。
  • オブジェクトをオリジンで更新します。ただし、ファイルバージョンを指定したクエリ文字列に基づき、キャッシュ操作を行います。たとえば、クエリ文字列を /image.png?ver=1 から /image.png?ver=2 に更新します。キャッシュポリシーを使用すると、キャッシュキーとオリジンリクエストに含まれるクエリ文字列を指定できます。
    注: 以前のバージョン (/image.png?ver=1) は、CloudFront キャッシュで利用可能な間は、引き続きリクエストできます。

ファイルのバージョニングの各方法について、次の利点と欠点を考慮してください。

  • オリジンにオブジェクトの新しいバージョンを保存すると、過去の名前が付与された、残存する過去バージョンに行った変更を差し戻すことができます。ただし、あるオブジェクトの複数バージョンを保存した場合、ストレージコストが増加する可能性があります。
  • オブジェクトをオリジンで更新し、キャッシュはクエリ文字列に基づいて行うと、ストレージコストを削減できます。ロールバックに備えるために、以前のオブジェクトバージョンをオフラインにしておくことをおすすめします。

注: バージョニングされたファイル名やディレクトリ名の指定は、S3 バージョニングとは関連しません。S3 バージョニングでは、コンテンツは自動的に更新されません。無効化リクエストを開始した後にキャンセルすることはできないため、ファイルパスを正しく指定したことを確認する必要があります。

関連情報

コンテンツがキャッシュに保持される期間 (有効期限) を管理する

クエリ文字列の転送とキャッシュ

AWS公式更新しました 5ヶ月前
コメントはありません

関連するコンテンツ