CloudFlare APIを使ってキャッシュを削除する

執筆日:

更新日:

最近ブログをはてなブログからHugoへ移行した。
HugoのフロントにCloudFlareを利用している。
ブログ移行についてはこちらを参照。
はてなブログからHugoに移行。その際に行ったあれこれ。

コンテンツをアップロードした場合などにCloudFlareのキャッシュを削除したく、
APIを利用して効率よく作業できる環境を整えた。

使い方

CloudFlareのAPIドキュメントはかなり充実している。
キャッシュの全削除については下記に記載がある。
https://api.cloudflare.com/#zone-purge-all-files

利用方法をみると、DELETE /zones/:identifier/purge_cacheとあるが、
:identifierがなんのことかはじめわからずはじめ苦戦した。

identifierの確認

identifierは下記APIで確認できる。
このAPIで返ってくるはじめのididenitiferだ。

curl -X GET "https://api.cloudflare.com/client/v4/zones \
    ?name=<your site> \
    &status=active \
    &page=1 \
    &per_page=20 \
    &order=status \
    &direction=desc \
    &match=all" \
    -H "X-Auth-Email: <your email>" \
    -H "X-Auth-Key: <your api key>" \
    -H "Content-Type: application/json" 
{
  "result": [
    {
      "id": "xxxxxxxxxxxxxxxxxxxxxxx",
      "name": "mosuke.tech",
      "status": "active",
      "paused": false,
      "type": "full",
      "development_mode": 0,
      "name_servers": [
        "rudy.ns.cloudflare.com",
        "sofia.ns.cloudflare.com"
      ],
      ...
      (中略)
      ...
    }
  ]
}

キャッシュの削除

うえで手に入れたidentifierを使って、ドキュメント通りpurge_cacheを実行するだけだ。
このAPIをデプロイの過程に組み込み効率よく運用できている。

curl -X DELETE "https://api.cloudflare.com/client/v4/zones/<identifier>/purge_cache" \
     -H "X-Auth-Email: <your email>" \
     -H "X-Auth-Key: <your api key>" \
     -H "Content-Type: application/json" \
     --data '{"purge_everything":true}'

さいごに

最近のサービスではめずらしくないが、APIに対応しているのはやはりいい。
毎度全キャッシュを消してしまっているのはどうかとは思うがそこは今後の改善点だ。
本件とは関係ないがCloudFlareはterraformにも対応しているし、かなり運用には便利そう。

記事の内容に関連した相談、仕事依頼したい New

記事の内容やクラウドネイティブ技術に関する相談、仕事依頼を開始しました。
仕事依頼、相談をしてみる

フィードバック

本記事に対して、フィードバックあればこちらのフォームからご記入ください。
記事の内容にフィードバックしてみる

このエントリーをはてなブックマークに追加