がオリジンからの HTTP 4xx および 5xx ステータスコード CloudFront を処理してキャッシュする方法 - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

がオリジンからの HTTP 4xx および 5xx ステータスコード CloudFront を処理してキャッシュする方法

が Amazon S3 バケットまたはカスタムオリジンサーバーからオブジェクトを CloudFront リクエストすると、オリジンが HTTP 4xx または 5xx ステータスコードを返すことがあります。これは、エラーが発生したことを示します。 CloudFront 動作は以下によって異なります。

  • カスタムエラーページが構成されているかどうか。

  • オリジンからのエラーレスポンスをキャッシュ CloudFront する期間 (エラーキャッシュ最小 TTL) を設定しているかどうか。

  • ステータスコード。

  • 5xx ステータスコードの場合、リクエストされたオブジェクトが現在 CloudFront エッジキャッシュにあるかどうか。

  • いくつかの 4xx ステータスコードでは、オリジンが Cache-Control max-age または Cache-Control s-maxage のヘッダーを返すかどうか。

CloudFront は、 GETおよび HEADリクエストへのレスポンスを常にキャッシュします。また、OPTIONSrequests. CloudFront does へのレスポンスをキャッシュ CloudFront するように を設定することもできます。他のメソッドを使用するリクエストへのレスポンスはキャッシュしません。

オリジンが応答しない場合、オリジンへの CloudFront リクエストはタイムアウトし、オリジンからの HTTP 5xx エラーと見なされます。これは、オリジンがそのエラーで応答しなかった場合でも発生します。このシナリオでは、 はキャッシュされたコンテンツの提供 CloudFront を継続します。詳細については、「使用できないオリジン」を参照してください。

ログ記録を有効にしている場合、 は HTTP ステータスコードに関係なく結果をログに CloudFront 書き込みます。

から返されるエラーメッセージに関連する機能とオプションの詳細については CloudFront、以下を参照してください。

カスタムエラーページを設定した場合に がエラー CloudFront を処理する方法

カスタムエラーページを設定している場合、リクエストされたオブジェクトがエッジキャッシュにあるかどうかによって CloudFront 動作が異なります。

リクエストされたオブジェクトがエッジキャッシュにない場合

CloudFront 以下がすべて当てはまる場合、 は引き続きオリジンからリクエストされたオブジェクトを取得しようとします。

  • ビューワーがオブジェクトを要求する

  • オブジェクトがエッジキャッシュにない

  • オリジンが HTTP 4xx または 5xx ステータスコードを返して、以下のいずれかに該当する:

CloudFront は以下を実行します。

  1. ビューワーリクエストを受信した CloudFront エッジキャッシュで、 はディストリビューション設定 CloudFront をチェックし、オリジンが返したステータスコードに対応するカスタムエラーページのパスを取得します。

  2. CloudFront は、カスタムエラーページのパスと一致するパスパターンを持つディストリビューション内の最初のキャッシュ動作を検索します。

  3. CloudFront エッジロケーションは、キャッシュ動作で指定されたオリジンにカスタムエラーページのリクエストを送信します。

  4. オリジンはカスタムエラーページをエッジロケーションに返します。

  5. CloudFront は、リクエストを行ったビューワーにカスタムエラーページを返します。また、次の最大値までカスタムエラーページをキャッシュします。

    • エラーキャッシュ最小 TTL で指定された時間の長さ (デフォルトでは 10 秒)

    • Cache-Control max-age ヘッダー、または最初のリクエストがエラーを生成したときに発信元から返された Cache-Control s-maxage ヘッダーで指定された時間

  6. キャッシュ時間 (ステップ 5 で決定) が経過すると、 はオリジンに別のリクエストを転送して、リクエストされたオブジェクトの取得を CloudFront 再試行します。 は、エラーキャッシュ最小 TTL で指定された間隔で再試行を CloudFront 続けます。

リクエストされたオブジェクトがエッジキャッシュにある場合

CloudFront 次のすべてが当てはまる場合、 はエッジキャッシュに現在存在するオブジェクトを提供し続けます。

  • ビューワーがオブジェクトを要求する

  • オブジェクトがエッジキャッシュに存在するが有効期限が切れている

  • オリジンがステータスコード 304 (変更なし) またはオブジェクトの更新バージョンを返す代わりに HTTP 5xx ステータスコードを返す

CloudFront は以下を実行します。

  1. オリジンが 5xx ステータスコードを返した場合、 は有効期限が切れていてもオブジェクト CloudFront を提供します。エラーキャッシュ最小 TTL の間、 はエッジキャッシュからオブジェクトを提供することでビューワーリクエストに応答し CloudFront 続けます。

    オリジンが 4xx ステータスコードを返した場合、 CloudFront はビューワーに、リクエストされたオブジェクトではなく、ステータスコードを返します。

  2. エラーキャッシュ最小 TTL が経過すると、 はオリジンに別のリクエストを転送して、リクエストされたオブジェクトの取得を CloudFront 再試行します。オブジェクトが頻繁にリクエストされない場合は、オリジンサーバーが 5xx レスポンスを返している間に、エッジキャッシュからオブジェクトを削除する CloudFront 可能性があります。オブジェクトが CloudFront エッジキャッシュに保持される期間については、「」を参照してくださいコンテンツがキャッシュに保持される期間 (有効期限) の管理

カスタムエラーページを設定していない場合に がエラー CloudFront を処理する方法

カスタムエラーページを設定していない場合の動作 CloudFront は、リクエストされたオブジェクトがエッジキャッシュにあるかどうかによって異なります。

リクエストされたオブジェクトがエッジキャッシュにない場合

CloudFront 以下がすべて当てはまる場合、 は引き続きオリジンからリクエストされたオブジェクトを取得しようとします。

  • ビューワーがオブジェクトを要求する

  • オブジェクトがエッジキャッシュにない

  • オリジンが HTTP 4xx または 5xx ステータスコードを返して、以下のいずれかに該当する:

CloudFront は以下を実行します。

  1. CloudFront は、4xx または 5xx ステータスコードをビューワーに返し、リクエストを受信したエッジキャッシュにステータスコードをキャッシュします。

    • エラーキャッシュ最小 TTL で指定された時間の長さ (デフォルトでは 10 秒)

    • Cache-Control max-age ヘッダー、または最初のリクエストがエラーを生成したときに発信元から返された Cache-Control s-maxage ヘッダーで指定された時間

  2. キャッシュ時間 (ステップ 1 で決定) の間、キャッシュされた 4xx または 5xx ステータスコードを持つ同じオブジェクトに対する後続のビューワーリクエスト CloudFront に対応します。

  3. キャッシュ時間 (ステップ 1 で決定) が経過すると、 はオリジンに別のリクエストを転送して、リクエストされたオブジェクトの取得を CloudFront 再試行します。 は、エラーキャッシュ最小 TTL で指定された間隔で再試行を CloudFront 続行します。

リクエストされたオブジェクトがエッジキャッシュにある場合

CloudFront 次のすべてが当てはまる場合、 はエッジキャッシュに現在存在するオブジェクトを提供し続けます。

  • ビューワーがオブジェクトを要求する

  • オブジェクトがエッジキャッシュに存在するが有効期限が切れている

  • オリジンがステータスコード 304 (変更なし) またはオブジェクトの更新バージョンを返す代わりに HTTP 5xx ステータスコードを返す

CloudFront は以下を実行します。

  1. オリジンが 5xx エラーコードを返した場合、 は有効期限が切れていてもオブジェクト CloudFront を提供します。エラーキャッシュの最小 TTL (デフォルトでは 10 秒) の間、エッジキャッシュからオブジェクトを提供することでビューワーリクエストに応答するように CloudFront 続行します。

    オリジンが 4xx ステータスコードを返した場合、 CloudFront はビューワーに、リクエストされたオブジェクトではなく、ステータスコードを返します。

  2. エラーキャッシュ最小 TTL が経過すると、 はオリジンに別のリクエストを転送して、リクエストされたオブジェクトの取得を CloudFront 再試行します。オブジェクトが頻繁にリクエストされない場合は、オリジンサーバーが 5xx レスポンスを返している間に、エッジキャッシュからオブジェクトを削除する CloudFront 可能性があります。オブジェクトが CloudFront エッジキャッシュに保持される期間については、「」を参照してくださいコンテンツがキャッシュに保持される期間 (有効期限) の管理

キャッシュする CloudFront HTTP 4xx および 5xx ステータスコード

CloudFront は、返される特定のステータスコードと、オリジンがレスポンスで特定のヘッダーを返すかどうかに応じて、オリジンから返される HTTP 4xx および 5xx ステータスコードをキャッシュします。

常にキャッシュする CloudFront HTTP 4xx および 5xx ステータスコード

CloudFront は、オリジンから返される次の HTTP 4xx および 5xx ステータスコードを常にキャッシュします。HTTP ステータスコードのカスタムエラーページを設定している場合、 はカスタムエラーページを CloudFront キャッシュします。

404

Not Found

414

Request-URI Too Large

500

Internal Server Error

501

Not Implemented

502

Bad Gateway

503

Service Unavailable

504

Gateway Time-out

Cache-Control ヘッダーに基づいてキャッシュする CloudFront HTTP 4xx ステータスコード

CloudFront は、オリジンが Cache-Control max-ageまたは Cache-Control s-maxageヘッダーを返す場合にのみ、オリジンから返された次の HTTP 4xx ステータスコードをキャッシュします。これらの HTTP ステータスコードのいずれかに対してカスタムエラーページを設定しており、オリジンがキャッシュコントロールヘッダーの 1 つを返す場合、 はカスタムエラーページをCloudFront キャッシュします。

400

Bad Request

403

Forbidden

405

Method Not Allowed

412

Precondition Failed

415

Unsupported Media Type