mcpField
C
cloudflare

cloudflare

github.com/alphaonedevクラウド・DevOps45 回インストール
リポジトリ

cloudflare について

cloudflare は、Cloudflare API と Wrangler を通じてインフラ管理を自動化するスキルです。スクリプトや CI/CD パイプラインで DNS、Access、Pages、Workers、R2 を管理する開発者向けです。

主な機能

  1. 01DNS レコードとゾーンの管理
  2. 02Pages サイトのデプロイと管理
  3. 03Access ポリシーの設定
  4. 04Workers スクリプトのアップロードと管理
  5. 05R2 オブジェクトの管理

活用シーン

  1. 01デプロイ時の DNS レコード更新
  2. 02Pages による静的サイトのデプロイ
  3. 03Access による認証ポリシーの適用
  4. 04R2 ストレージへのオブジェクトアップロード

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill cloudflare

インストール後、Claude Code で/cloudflareを入力して読み込まれたか確認します。

詳細

cloudflare

目的

このスキルは、DNS レコード、ゾーン、Pages サイト、Access ポリシー、Workers スクリプト、R2 ストレージを管理するための Cloudflare API へのプログラムによるアクセスを提供します。指定されたアカウント ID(YOUR_CLOUDFLARE_ACCOUNT_ID)を使用して、安全に操作を実行します。

使用する場面

デプロイ時の DNS レコード更新、Access によるアプリケーションの保護、Pages を使った静的サイトのデプロイ、Workers によるエッジコンピューティング、R2 でのオブジェクトストレージの管理、ゾーンの作成や削除など、インフラストラクチャーのタスクを自動化する際にこのスキルを使用します。スクリプトや CI/CD パイプライン、または Cloudflare を他のサービスと連携する場合に適用してください。

主な機能

  • DNS:ゾーン内のレコード(A、CNAME、TXT)を管理します。
  • ゾーン:アカウント ID を使ってゾーンを作成、一覧表示、更新、削除します。
  • Pages:カスタムドメインを使って静的サイトをデプロイ、管理します。
  • Access:認証と認可のポリシーを適用します。
  • Workers:リクエストとレスポンスに対するエッジロジックを実行します。
  • R2:アップロードや削除などのオブジェクトストレージ操作を行います。 認証には $CLOUDFLARE_API_TOKEN に設定した API トークンが必要です。API リクエストにはアカウント ID を含めてください。

使用パターン

リクエストは常に $CLOUDFLARE_API_TOKEN で認証してください。API 呼び出しには HTTP ヘッダーを使用します(例:Authorization: Bearer $CLOUDFLARE_API_TOKEN)。CLI の場合は Wrangler をインストールし、wrangler login でログインします。リクエストは JSON ペイロードで構成し、ステータスコードを使ってレスポンスを処理します。API エンドポイントには https://api.cloudflare.com/client/v4 をプレフィックスとして付け、/accounts/YOUR_CLOUDFLARE_ACCOUNT_ID/zones のようにパスにアカウント ID を含めてください。

一般的なコマンド/API

  • DNS の更新:PUT を使用して /zones/{zone_id}/dns_records/{record_id} に、{"type":"A","name":"example.com","content":"192.0.2.1","ttl":3600} のような JSON ボディを送信します。
  • ゾーンの作成:POST を /zones に送信し、ボディには {"name":"example.com","account":{"id":"YOUR_CLOUDFLARE_ACCOUNT_ID"}} を指定します。
  • Pages のデプロイ:Wrangler CLI を使用します:wrangler pages deploy ./build --project-name=my-site。
  • Access ポリシー:POST を /access/policies に送信し、ボディには {"name":"Block IP","precedence":1,"decision":"deny","request":{"ip":"1.1.1.1"}} を指定します。
  • Workers スクリプト:スクリプトの内容を付けて、/accounts/YOUR_CLOUDFLARE_ACCOUNT_ID/workers/scripts/my-worker に PUT でアップロードします。
  • R2 オブジェクトのアップロード:ファイルデータを付けて、/accounts/YOUR_CLOUDFLARE_ACCOUNT_ID/r2/buckets/my-bucket/objects/my-file に PUT でアップロードします。 DNS 更新のコードスニペット:
curl -X PUT "https://api.cloudflare.com/client/v4/zones/zone_id/dns_records/record_id" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"type":"A","name":"example.com","content":"192.0.2.1"}'

設定形式:API トークンを .env に CLOUDFLARE_API_TOKEN=your_token として保存し、スクリプトで読み込んでください。

統合に関する注意事項

環境内で $CLOUDFLARE_API_TOKEN をエクスポートして連携します。Node.js では @cloudflare/workers SDK を使用します。npm i @cloudflare/workers でインストールし、トークンを使ってインポートおよび初期化してください。Python では cloudflare ライブラリを使用します。pip install cloudflare でインストールし、Cloudflare(api_token=os.environ['CLOUDFLARE_API_TOKEN']) で認証してください。アカウント間のエラーを防ぐため、必ずレスポンスのアカウント ID を検証してください。Wrangler の場合は、コマンドを実行する前に wrangler whoami を実行してログイン状態を確認してください。

エラー処理

HTTP ステータスコードを確認してください。200~299 は成功、4xx はクライアントエラー(トークンが無効な場合の 401 Unauthorized など)、5xx はサーバー側の問題を示します。API エラーの場合は、{"errors":[{"code":1000,"message":"Bad request"}]} のような JSON レスポンスボディの「errors」配列を解析してください。一時的なエラー(429 Rate Limit など)は、指数バックオフを使って再試行します。スクリプトでは呼び出しを try-catch ブロックで囲みます:

try {
  const response = await fetch('https://api.cloudflare.com/client/v4/...', { headers: { Authorization: `Bearer ${process.env.CLOUDFLARE_API_TOKEN}` } });
  if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
} catch (error) {
  console.error('API call failed:', error.message);
}

デバッグに備えて、エンドポイントとパラメーターを含む詳細なエラーメッセージを記録してください。

具体的な使用例

  1. ドメインの DNS A レコードを更新する:まず、GET /zones?name=example.com でゾーン ID を取得します。次に、レコード ID を使って、本文 {"content":"new_ip_address"} を指定し、PUT /zones/zone_id/dns_records/record_id を実行して更新します。これにより、ドメインが最新のサーバー IP を指すようになります。
  2. Workers スクリプトをデプロイする:スクリプトを worker.js に記述し、wrangler publish --name my-worker を実行します。API と連携する場合は、スクリプトの内容を指定して PUT /accounts/YOUR_CLOUDFLARE_ACCOUNT_ID/workers/scripts/my-worker でアップロードし、その後、POST /zones/zone_id/workers/routes でルートにバインドします。

グラフの関係

  • 関連項目:core-openclaw(クラスター)、レコード管理用の「dns」やエッジコンピューティング用の「workers」、セキュリティポリシー用の「access」などのスキルです。
  • 依存関係:Cloudflare API による認証が必要です。デプロイトリガー用の「github」や R2 データ同期用の「aws」など、外部スキルと連携します。

コメント