Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

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

デフォルトでは、オリジンから HTTP 4xx または 5xx ステータスコードが返されると、CloudFront はこれらのエラーレスポンスを 5 分間キャッシュします。CloudFront は、その後オブジェクトに対する次のリクエストをオリジンに送信して、エラーの原因となった問題が解決され、リクエストしたオブジェクトが利用可能になったかどうか確認します。

注記

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

CloudFront がキャッシュする 4xx および 5xx ステータスコードそれぞれに対して、エラーキャッシュ期間 ([Error Caching Minimum TTL (エラーキャッシュ最小 TTL)]) を指定できます。手順については、「エラーレスポンス動作を構成する」を参照してください。期間を指定する場合は、以下の点に注意してください。

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

  • オリジンがオブジェクトに関するエラーを返すと、CloudFront は、エラーキャッシュ期間が終了するまで、オブジェクトのリクエストにエラーレスポンスで応答するか、またはカスタムエラーページで応答します。長いエラーキャッシュ期間を指定すると、オブジェクトが再び利用可能になった後でも、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 を使ってそのステータスコードを無効化できます。オリジンが複数のオブジェクトに対してエラーレスポンスを返している場合は、各オブジェクトについて個別に無効化する必要があります。オブジェクトの無効化については、「ファイルの無効化」を参照してください。