GoogleAppsScriptからCloudflareのAPIでキャッシュを削除する
CloudflareのキャッシュをGoogleAppsScriptから削除する例です。
Zone IDの入手
- [Cloudflare] > [サイト]
- サイトの概要ページへ移動
- [Overview] > [API] > [Zone ID]
- 記載されている英数字の文字列
API Keyの入手
- [Cloudflare] > [サイト]
- サイトの概要ページへ移動
- [Overview] > [API] > [Get your API token]
- API Tokensページへ移動
- [API Keys] > [Global API Key] > [View]
- パスワードを入力するとAPI Keyが表示されます
- ここで入手できるAPI Keyが
X-Auth-Key
です - ちなみに
X-Auth-Email
は、登録メールアドレスです
※許可範囲を限定できるため、API KeyよりもAPI Tokenを使用すべきです
API Tokenの入手
- [Cloudflare] > [サイト]
- サイトの概要ページへ移動
- [Overview] > [API] > [Get your API token]
- API Tokensページへ移動
- [API Tokens] > [Create Token]
- 許可項目を限定したトークンを作成できます
- 次の設定とすることでキャッシュを削除できるトークンを作成できます
- [Permissions] > [Zone][Cache Purge][common.purge]
curlを利用してキャッシュを削除する
Linux(API Keyを使用する例)
curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZoneID}/purge_cache" \
-H "Content-Type:application/json" \
-H "X-Auth-Key: ${APIKey}" \
-H "X-Auth-Email: ${Email}" \
--data '{"purge_everything":true}'
※${ZoneID}, ${APIKey}, ${Email}を置換える
Windows(API Tokenを使用する例)
curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZoneID}/purge_cache" ^
-H "Content-Type:application/json" ^
-H "Authorization: Bearer ${APIToken}" ^
--data "{\"files\":[\"https://www.bugbugnow.net/\"]}"
※${ZoneID}, ${APIToken}を置換える
※Windows標準では、curlが入っていないため別途インストールする必要があります
全ページのキャッシュを削除する
// Cloudflareの全キャッシュ削除
function deleteCacheAll() {
var zoneid = '${ZoneID}';
var apikey = '${APIKey}';
var email = '${Email}';
var data = "{\"purge_everything\":true}";
var url = 'https://api.cloudflare.com/client/v4/zones/'+zoneid+'/purge_cache';
var options = {
method: "POST",
headers:{
"Content-Type": "application/json",
"X-Auth-Key": apikey,
"X-Auth-Email": email
},
payload: data
};
var res = UrlFetchApp.fetch(url, options);
//Logger.log(res.getContentText());
};
※${ZoneID}, ${APIKey}, ${Email}を置換える
特定ページのキャッシュを削除する
// Cloudflareの個別ファイルキャッシュ削除(最大30個)
function deleteCacheFiles(files) {
var zoneid = '${ZoneID}';
var apitoken = '${APIToken}';
var data = "{\"files\":"+JSON.stringify(files)+"}";
var url = 'https://api.cloudflare.com/client/v4/zones/'+zoneid+'/purge_cache';
var options = {
method: "POST",
headers:{
"Content-Type": "application/json",
"Authorization": "Bearer "+apitoken
},
payload: data
};
var res = UrlFetchApp.fetch(url, options);
//Logger.log(res.getContentText());
};
// 例
// var files = ['https://www.bugbugnow.net/', 'https://www.bugbugnow.net/2018/03/windows10.html'];
// deleteCacheFiles(files);
※${ZoneID}, ${APIToken}を置換える