CloudFront がエラーをキャッシュする時間を制御する - Amazon CloudFront

CloudFront がエラーをキャッシュする時間を制御する

CloudFront は、エラーレスポンスをデフォルト時間の 10 秒だけキャッシュします。その後、CloudFront はオブジェクトへの次のリクエストをオリジンに送信し、エラーの原因となった問題が解決されているかどうかと、リクエストしたオブジェクトが利用可能であるかどうかを確認します。

CloudFront がキャッシュする 4xx および 5xx ステータスコードそれぞれに対して、エラーキャッシュ期間 (エラーキャッシュ最小 TTL) を指定することができます。(詳細については、CloudFront がキャッシュする HTTP 4xx および 5xx ステータスコード を参照してください)。期間を指定する場合は、以下の点に注意してください。

  • 短いエラーキャッシュ期間を指定すると、長い期間を指定した場合に比べて CloudFront からオリジンに転送されるリクエストの数が多くなります。この構成で 5xx エラーが発生すると、エラーの返信処理のために、オリジンで障害を起こした問題が悪化する可能性があります。

  • オリジンがオブジェクトに関するエラーを返すと、CloudFront は、エラーキャッシュ期間が終了するまで、オブジェクトのリクエストにエラーレスポンスで応答するか、またはカスタムエラーページで応答します。長いエラーキャッシュ期間を指定するなら、オブジェクトが再び利用可能になった後も、CloudFront は長い間、リクエストにエラーレスポンスまたはカスタムエラーページで引き続き応答するかもしれません。

注記

リクエストされた範囲は不適格であることを示す HTTP ステータスコード 416 (Requested Range Not Satisfiable) のカスタムエラーページを作成したり、オリジンが CloudFront にステータスコード 416 を返すと CloudFront がビューワーに返す HTTP ステータスコードを変更したりできます。(詳しくは、CloudFront から返されるレスポンスコードを変更する を参照してください)。ただし、CloudFront はステータスコード 416 のレスポンスをキャッシュしないため、ステータスコード 416 に対して [Error Caching Minimum TTL] (エラーキャッシュの最小 TTL) の値を指定しても、CloudFront はそれを使用しません。

CloudFront でエラーをキャッシュする時間をオブジェクトごとに制御したい場合は、そのオブジェクトのエラーレスポンスに適切なヘッダーを追加するようにオリジンサーバーを設定できます。

オリジンが Cache-Control: max-age ディレクティブ、Cache-Control: s-maxage ディレクティブ、または Expires ヘッダーを追加した場合、CloudFront は、ヘッダーの値と [Error Caching Minimum TTL] (エラーキャッシュの最小 TTL) の値を比較してより大きい値の時間だけ、エラーレスポンスをキャッシュします。

注記

Cache-Control: max-age および Cache-Control: s-maxage の値は、エラーページをフェッチするキャッシュ動作に設定されている [Maximum TTL] (最大 TTL) の値以下にする必要があります。

オリジンが他の Cache-Control ディレクティブまたはヘッダーを追加した場合、CloudFront は [Error Caching Minimum TTL] (エラーキャッシュの最小 TTL) の値の時間だけ、エラーレスポンスをキャッシュします。

オブジェクトに対する 4xx または 5xx ステータスコードの有効期限が、設定した待機時間よりも長く、さらにオブジェクトが使用可能状態に復帰した場合は、リクエストされたオブジェクトの URL を使ってそのステータスコードを無効化できます。オリジンが複数のオブジェクトに対してエラーレスポンスを返している場合は、各オブジェクトについて個別に無効化する必要があります。オブジェクトの無効化については、「ファイルを無効化してコンテンツを削除する」を参照してください。