Amazon CloudFront で HTTP 4xx 5xx ステータスコードのキャッシュ時間を変更する

Amazon_CloudFront

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

オペレーション部の高橋です。

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 開発者ガイド

設定方法

マネジメントコンソールから対応します。

skitch

対象の CloudFront Distributions を選択し「Distribution Settings」をクリックします。

skitch

Error Pages タブを選択します。 現段階では何も設定されておらず、エラーキャッシュ最小 TTLはデフォルトの5分となります。 Custom Error Response から設定していきます。

skitch

今回は、500 Internal Service Error で キャッシュ時間は30秒で設定しました。 カスタムエラーページを設定している場合は、Response Page Path(/error-pages/403-forbidden.html)や HTTP Response Codeを選択します。

skitch

設定はこちらで完了です。

skitch

なお、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 ステータスコードのキャッシュ時間を変更して 運用するのも一つの方法かと思います。