CloudFlareでAPIを使って個別や全部のファイルキャッシュを削除させる
はじめに
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=[email protected]
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
Author And Source
この問題について(CloudFlareでAPIを使って個別や全部のファイルキャッシュを削除させる), 我々は、より多くの情報をここで見つけました https://qiita.com/yousan/items/a62336f903a2ab512976著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .