Edited at

AWS CloudFrontで極力キャッシュさせたくない時の話

More than 1 year has passed since last update.


目的

CloudFrontで出来るだけキャッシュさせないようにする!

CDNなのにキャッシュしないの?!とかいうツッコミは無しです。

要件によっては、CDNなのにキャッシュしない。なんてことはあるんです。

CloudFront挟むけど、一部のファイルは高頻度に更新されるからキャッシュさせたくない。とか、

s3ホスティング機能だけじゃhttps使えないから、CloudFrontをクラウド(s3)のフロントに配置してSSL通信させるとか。


本題の設定内容

CloudFrontの一般的な設定方法とかは他サイトに沢山あるので割愛して、「極力キャッシュさせない(1秒キャッシュ)」設定方法だけ記載します。

(某所より0秒キャッシュは推奨されないとの事で、1秒キャッシュにしています。)

追記: 2017.1.12

0秒の場合はそのままオリジンにアクセスすることになるため、大量アクセスからのオリジン保護の意図も含めて1秒の設定になります。

そのままオリジンに流したい場合は0秒、大量の同時アクセスに対するオリジンの保護も考えるなら1秒の設定値が良いです。


  1. CloudFront作成中の画面で、[Object Caching]の[Customize]をONにします。

  2. [Minimum TTL]、[Maximum TTL]、[Default TTL]を1に設定します。

AWS_CloudFront_Management_Console.png


注意点

さて、これで終わりでも良いんですが、このままだと200/300番台以外のステータスコードは1秒以上キャッシュされます。(300秒)

なので、[Create Distribution]でCloudFrontを作成した後に、以下の通りに設定変更します。


  1. 対象の CloudFront(Distribution)をチェックし、[Distribution]をクリック

    AWS_CloudFront_Management_Console 2.png


  2. [Error Pages]を選択し、[Create Custom Error Response]をクリック

    AWS_CloudFront_Management_Console 3.png


  3. 後はこの表示されているエラーコードに対して、[Error Caching Minimum TTL]を1に設定する ←これが重要

      ※ Customize Error Responseは必要に応じて指定ください。

    AWS_CloudFront_Management_Console 4.png


Enjoy! AWS Life!