cloudflare について
cloudflare は、Cloudflare API と Wrangler を通じてインフラ管理を自動化するスキルです。スクリプトや CI/CD パイプラインで DNS、Access、Pages、Workers、R2 を管理する開発者向けです。
主な機能
- 01DNS レコードとゾーンの管理
- 02Pages サイトのデプロイと管理
- 03Access ポリシーの設定
- 04Workers スクリプトのアップロードと管理
- 05R2 オブジェクトの管理
活用シーン
- 01デプロイ時の DNS レコード更新
- 02Pages による静的サイトのデプロイ
- 03Access による認証ポリシーの適用
- 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);
}
デバッグに備えて、エンドポイントとパラメーターを含む詳細なエラーメッセージを記録してください。
具体的な使用例
- ドメインの DNS A レコードを更新する:まず、GET
/zones?name=example.comでゾーン ID を取得します。次に、レコード ID を使って、本文{"content":"new_ip_address"}を指定し、PUT/zones/zone_id/dns_records/record_idを実行して更新します。これにより、ドメインが最新のサーバー IP を指すようになります。 - 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」など、外部スキルと連携します。