Cloudflare Pagesの削除――too many deploymentsの解決方法
以前、このブログをCloudflareのPagesからWorkersへ移行しました。数か月使ってみて何の問題も無かったため、いよいよ移行前のPagesは削除するぞと意気込んでました。が、すぐには削除できなかったので備忘録を残します。
どういう問題が起きたのか
Cloudflare Pagesの該当プロジェクトの「設定 > 一般」の「削除」を押しました。

すると次のエラーメッセージが表示され、削除できませんでした。
Your project has too many deployments to be deleted, follow this guide to delete them: https://cfl.re/3CXesln原因
エラーメッセージに書いてあるとおり、デプロイ数がたくさんあると削除できないようです。
対応
幸いにも、エラーメッセージにあるリンクに対応方法が書いてあります。公式ドキュメントの”Delete a project with a high number of deployments”です。
この手順に従って対応していきます。
スクリプトの準備
まずは前述のリンクからdelete-all-deployments.zipをダウンロードして解凍しましょう。
cd ~/ghq/dev/cloudflare/delete-deployments # 任意のディレクトリmv ~/Downloads/delete-all-deployments.zip .unzip delete-all-deployments.zipunzipすると今いるディレクトリ直下にいくつかファイルが展開されます。
Archive: delete-all-deployments.zip inflating: package-lock.json inflating: LICENSE.md inflating: index.js inflating: README.md inflating: package.jsonNode.jsで書かれているのでインストールが必要です。
npm installIDやトークンの準備
続いて、スクリプト実行に必要なトークンなどを取得します。
アカウントIDの取得
アカウントIDは、Cloudflareのダッシュボードに表示されるアカウント名の横のメニューからコピーできます。

トークン
画面右上のプロフィールを押してプロフィールページを開き、サイドバーの「APIトークン」をクリックします。「トークンを作成する」を押しましょう。

トークンの権限設定のテンプレートなどが用意されてますが今回は「カスタムトークン」で大丈夫です。

少し長いのでまずは前半。
- トークン名:自分が分かりやすければOK
- 権限:「アカウント・Cloudflare Pages・編集」に設定
- アカウントリソース:「含む・すべてのアカウント」のままでOK

続いて後半。クライアントIPアドレスフィルタリングは、心配な人は設定しましょう。筆者は未設定です。
TTLはなるべく短く設定しましょう。

スクリプト実行
スクリプトを実行しましょう。
CF_API_TOKEN=<YOUR_CF_API_TOKEN> CF_ACCOUNT_ID=<ACCOUNT_ID> CF_PAGES_PROJECT_NAME=<PROJECT_NAME> CF_DELETE_ALIASED_DEPLOYMENTS=true npm start- トークン:さっき作ったやつ
- アカウントID:トップページでコピーしたやつ
- プロジェクト名:消したいPagesのプロジェクト名
結果はこんな感じ
参考までに、筆者の実行結果を書いておきます。
- かかった時間:13分36秒
- 701件のデプロイが削除された
> delete-all-deployments@1.0.0 start> node index.js
Listing next 30 deployments, this may take a while...Fetching deployments... (10 deployments fetched)Fetching deployments... (20 deployments fetched)Fetching deployments... (30 deployments fetched)Found live production deployment to exclude from deletion: 2a8653fd-4fd8-40bc-8f15-b726cfa4967cDeleted deployment d7109ece-68a1-46a6-82ad-979bab17b3b8 for project foo// ...最後のデプロイだけは手動削除
最後のデプロイはスクリプトでは消えないようです。

もう一度「設定 > 一般」の「削除」を押せば、プロジェクトの削除は完了です。

スクリプトとトークン削除
後始末もしておきましょう。zipファイルやスクリプトの他、トークンも削除しましょう。
以上、Cloudflare Pagesの削除方法でした。長い間お世話になりました。