Amazon CloudFront で HTTP 4xx 5xx ステータスコードのキャッシュ時間を変更する
はじめに
CloudFrontはオリジンサーバの問題などで一時的にエラーを表示する場合があります。 その時CloudFrontはHTTP 4xx 5xx ステータスコードをデフォルトで5分間キャッシュします。
HTTP 4xx 5xx ステータスコードのキャッシュ時間は「Error Caching Minimum TTL」の設定にて 変更することができますので変更方法をご紹介したいと思います。
Error Caching Minimum TTL(エラーキャッシュ最小 TTL)とは
CloudFront がオリジンサーバーからのエラーレスポンスをキャッシュする最小時間です。 エラーキャッシュ最小 TTL はデフォルトで 5 分となっています。
CloudFrontがオリジンサーバから4xx 5xxを受け取った場合の動作について
CloudFrontはオリジンサーバが4xx 5xxを返したとき条件によって動作が変わりますが エラーキャッシュ最小 TTL(デフォルトで 5 分)の設定時間CloudFrontはクライアントにエラーを返し エラーキャッシュ最小 TTLの設定時間が過ぎるとオリジンにリクエストされたオブジェクトを取りに行きます。
条件 ・カスタムエラーページが構成されているかどうか。 ・オリジンからのエラーレスポンスを CloudFront がキャッシュする時間(エラーキャッシュ最小 TTL)が構成されているかどうか。 ・ステータスコード。 ・5xx ステータスコードの場合、リクエストされたオブジェクトが現在 CloudFront エッジキャッシュにあるかどうか。
こちらにつきましては下記ドキュメントに詳細が記載されていますのでご確認ください。
CloudFront がオリジンからの HTTP 4xx および 5xx ステータスコードを処理してキャッシュに保持する方法 | Amazon CloudFront 開発者ガイド
設定方法
マネジメントコンソールから対応します。
対象の CloudFront Distributions を選択し「Distribution Settings」をクリックします。
Error Pages タブを選択します。 現段階では何も設定されておらず、エラーキャッシュ最小 TTLはデフォルトの5分となります。 Custom Error Response から設定していきます。
今回は、500 Internal Service Error で キャッシュ時間は30秒で設定しました。 カスタムエラーページを設定している場合は、Response Page Path(/error-pages/403-forbidden.html)や HTTP Response Codeを選択します。
設定はこちらで完了です。
なお、HTTP Error Codeで設定可能なステータスコードは下記となります。
400 | Bad Request |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
414 | Request-URI Too Large |
500 | Internal Service Error |
501 | Not Implemented |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Time-out |
まとめ
CloudFront で HTTP 4xx 5xx ステータスコードをキャッシュする時間を変更する方法を紹介しました。 デフォルトでは5分となっておりますが、HTTP 4xx 5xx ステータスコードのキャッシュ時間を変更して 運用するのも一つの方法かと思います。