はじめに
CloudFlare便利です。
とりあえずの設定を入れておくだけでそこそこ運用できるのですが、もうちょっと突っ込んだ運用ができないか、ということでキャッシュの個別削除を行ってみました。
- APIキーの取得
- 環境変数の設定
- zone idの取得
- 実際の削除
という流れになります。
新しいAPIをいじるときはだいたいそうですが、なかなかうまく行かなくて苦労しました。
ちなみにAPIは5分間に1200回のアクセスまでとなっています。お気を付けください。
APIキーの取得
まずはAPIキーを取得します。
ログイン後、アカウント設定>API Keyにあります。
https://www.cloudflare.com/a/account/my-account
この値をメモしておきます。
事前準備
メールアドレスとAPIキーでアクセスするので、変数に取っておきましょう。
$ export API=1234abcdxxxxxxxxxxxxxxxxxx
$ export MAIL=user@example.com
zone idを取得
APIアクセスではzone id (zone identifier)を使います。
アカウントとドメインに対してユニークなIDとなっています。
まずはそれを調べます。
$ export DOMAIN=example.com
curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=${DOMAIN}&status=active&page=1&per_page=20&order=status&direction=desc&match=all" \
-H "X-Auth-Email: ${MAIL}" \
-H "X-Auth-Key: ${API}" \
-H "Content-Type: application/json"
戻り値にあるidを控えておきます。
jqを使ってidを抜き出す場合にはこうです。
curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=${DOMAIN}&status=active&page=1&per_page=20&order=status&direction=desc&match=all" \
-H "X-Auth-Email: ${MAIL}" \
-H "X-Auth-Key: ${API}" \
-H "Content-Type: application/json" | jq '.result[0].id'
アカウントにある全てのドメイン情報を取得するには次のようにします。
curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: ${MAIL}" \
-H "X-Auth-Key: ${API}" \
-H "Content-Type: application/json"
こちらも同じように設定しておきます。
$ export ZONEID=123412342134214321423142134
キャッシュの削除
さていよいよキャッシュの削除です。
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/${ZONEID}/purge_cache" \
-H "Content-Type:application/json" \
-H "X-Auth-Key: ${API}" \
-H "X-Auth-Email: ${MAIL}" \
--data '{"files":["http://example.com/"]}'
--dataでfilesとして渡す箇所に削除したいファイルのURLを入れてください。
トップページであれば上記のように / で終わらせます。index.html ではうまく消えません。
全部消す
全部を消すにはPOSTで送りつつ、リクエストボディに purge_everythingを記載します。
curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZONEID}/purge_cache" \
-H "Content-Type:application/json" \
-H "X-Auth-Key: ${API}" \
-H "X-Auth-Email: ${MAIL}" \
--data '{"purge_everything":true}';
最後に
CloudFlare便利ですね!なんでもできるのでファンになりそうです。
もっと色々と使っていきたいです。
おまけ
APIアクセスのときには出力結果について、jqを使うと見易いです。
http://qiita.com/yousan/items/ac83ae06673c6745052b