zudo-cloudflare-wisdom
GitHub リポジトリ

検索したい単語を入力

いつでも検索バーを開ける

Cloudflare セットアップ

アカウント設定、APIトークン、Wrangler CLI の構成

API トークン

Cloudflare ダッシュボードの My Profile > API Tokens から API トークンを作成します。

Pages および Workers のデプロイには、以下の権限が必要です:

  • Account > Cloudflare Pages > Edit

  • Account > Workers Scripts > Edit

  • Account > Account Settings > Read

  • Account > Workers KV Storage > Edit(KV を使用する場合)

  • Account > Workers R2 Storage > Edit(R2 を使用する場合)

  • Account > D1 > Edit(D1 を使用する場合)

Warning

Account Settings: Read は一見デプロイと無関係に見えるが、実際には必須の権限だ。最小構成で動作する Pages トークンも {Cloudflare Pages: Edit, Account Settings: Read} であり、バインディングが一切ない素の wrangler deploy でもこれが要る。外すと、権限不足を示す具体的なエラーではなく、原因のわかりにくい Authentication error [code: 10000] が返る。

Tip

サービスごとに別々のトークンを作るのではなく、全権限をまとめた1つのトークンを作成しましょう。GitHub リポジトリのシークレットに CLOUDFLARE_API_TOKEN として保存してください。

カスタムドメインのデュアルゾーン権限の罠や Zone Resources のスコープ設定まで含めた、より完全なトークンのリファレンスは ゼロからのデプロイ の CI トークンのセクションを参照。

低リスクなリポジトリ間でのトークン共有

同一アカウント上でリスクの低い小さなリポジトリ(サンプルアプリ、デモ、プレビューサイトなど)を多数運用しているなら、リポジトリごとにほぼ同じトークンを何個も作るのではなく、全リポジトリの権限を合算した1つのアカウントスコープトークンを発行するのも一つの手だ。ローテーションすべきシークレットが減り、スコープを考える場所も1つで済む。

配布にはループを使う:

for repo in org/repo-a org/repo-b org/repo-c; do
  gh secret set CLOUDFLARE_API_TOKEN --repo "$repo" --body "$TOKEN"
done

トレードオフはブラスト半径だ -- トークンが漏洩すれば、それを共有するすべてのリポジトリが影響を受ける。いずれかのリポジトリの必要権限が変わったらトークンをローテーションするか、リポジトリの性質が乖離してきたらグループごとのトークンに戻す。

無関係、または信頼度の異なるリポジトリに対してはデフォルトにしない -- そうしたリポジトリは個別のトークンのままにしておく。

CI 用の環境変数

すべてのプロジェクトで以下の GitHub Actions シークレットが必要です:

シークレット説明
CLOUDFLARE_ACCOUNT_IDCloudflare アカウント ID(ダッシュボードの URL に含まれる)
CLOUDFLARE_API_TOKEN上記で作成した API トークン
IFTTT_PROD_NOTIFY(任意)デプロイ通知用の IFTTT Webhook URL

Wrangler CLI

Wrangler は Cloudflare の CLI ツールです。CI では npx wrangler@4 を使い、グローバルインストールを避けます。ローカル開発では以下のようにインストールします:

pnpm add -D wrangler

または npx で実行します:

npx wrangler@4 pages deploy dist --project-name=my-project

Warning

破壊的変更を避けるため、メジャーバージョンを固定してください(wrangler@4)。CI では wrangler@latest を使用しないでください。

wrangler.toml

Pages Functions、KV、D1、R2 を使用するプロジェクトでは、プロジェクトルートに wrangler.toml が必要です:

# Cloudflare Pages project configuration
compatibility_date = "2024-12-01"

バインディングや設定の詳細は Wrangler 設定 を参照してください。

Revision History

作成更新