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をダウンロードして解凍しましょう。

Terminal window
cd ~/ghq/dev/cloudflare/delete-deployments # 任意のディレクトリ
mv ~/Downloads/delete-all-deployments.zip .
unzip delete-all-deployments.zip

unzipすると今いるディレクトリ直下にいくつかファイルが展開されます。

Archive: delete-all-deployments.zip
inflating: package-lock.json
inflating: LICENSE.md
inflating: index.js
inflating: README.md
inflating: package.json

Node.jsで書かれているのでインストールが必要です。

Terminal window
npm install

IDやトークンの準備

続いて、スクリプト実行に必要なトークンなどを取得します。

アカウントIDの取得

アカウントIDは、Cloudflareのダッシュボードに表示されるアカウント名の横のメニューからコピーできます。

アカウントIDの取得

トークン

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

トークン作成画面

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

カスタムトークン

少し長いのでまずは前半。

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

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

トークン作成の前半

スクリプト実行

スクリプトを実行しましょう。

Terminal window
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-b726cfa4967c
Deleted deployment d7109ece-68a1-46a6-82ad-979bab17b3b8 for project foo
// ...

最後のデプロイだけは手動削除

最後のデプロイはスクリプトでは消えないようです。

最後のデプロイは残る

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

プロジェクトの削除

スクリプトとトークン削除

後始末もしておきましょう。zipファイルやスクリプトの他、トークンも削除しましょう。


以上、Cloudflare Pagesの削除方法でした。長い間お世話になりました。