[AWS] Amazon CloudFrontのキャッシュ無効化(TTL設定)

2016.11.29

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

こんぬづは、昨日飲みの席でインターン時代の先輩から「ドープ」というスラングを教えてもらいました田中です。
"Awesome"とかと同じ感じで「スゲェ」とか「最高」とかの意味らしいです。イケてないのは「ノー ドープ」と言う用法らしいです。

今日はCloudFrontのキャッシュ無効化設定の方法を紹介します。

TTL設定とは

まずTTLというのはTime to liveの省略で、生存期間を示す言葉です。
今回はCloudFrontのキャッシュのTTLなので、CloudFrontのエッジサーバーにキャッシュが保存される期間の設定の話になります。

キャッシュの無効化方法

オリジンサーバーのCache-Controlを設定する

今回の例はEC2上のnode.js/expressで設定。
レスポンスヘッダのCache-Controlにno-cacheか、max-ageを0に設定します。

// index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  // res.header('Cache-Control', 'max-age=0');
  res.header('Cache-Control', 'no-cache');
  res.render('index', { title: '初めてのリモートサーバー!!!' });
});

CloudFrontのTTLを設定する

該当するCloudFrontを選択してコンソールを開きます。

スクリーンショット_2016-11-29_11_09_14

Behaviorsタブを選択し、設定しているBehaviorにチェックを入れてEditボタンを押します。

スクリーンショット_2016-11-29_11_10_53

Minimum TTL, Maximum TTL, Default TTLをそれぞれ0に設定します。

スクリーンショット_2016-11-29_11_11_33

エッジサーバーのキャッシュを削除する

すぐにキャッシュを削除して無効化を確認するためには以下の記事に書いてある方法で削除したいオブジェクトのキャッシュを選択して削除します。

[AWS] Amazon CloudFrontのキャッシュ削除(Invalidation) | Developers.IO

まとめ

開発デバッグの時はキャッシュが邪魔になることがあるので、ちょうど調べました。

TTLとか知らなかったです。(なんだそのPPAPみたいなのはと思った)
AWSとかネットワークやセキュリティは省略語が多くてとっつきにくく感じてしまいますね;
でも言葉の定義を調べると意味としてはシンプルなものが多いので慣れな気もしました、頑張ります。

参考