Cloudflare APIを使いたいあなたへ

2024/06/24に公開

この記事 is 何?

Cloudflare APIを使いたい人のために、実際に使ったAPIのリクエスト例を逆引きでメモしておきます。

Cloudflare APIとは?

Cloudflare APIは、Cloudflareの機能をプログラムで操作するためのインターフェースです。これにより、ユーザーは以下のようなタスクを自動化できます:

  1. DNS管理: ドメインのDNSレコードを作成、更新、削除。
  2. セキュリティ設定: ファイアウォールルールの設定やDDoS防御の調整。
  3. キャッシュ管理: キャッシュのパージや設定の変更。
  4. 分析データの取得: サイトのトラフィックやセキュリティイベントのレポートを取得。
  5. SSL証明書の管理: SSL/TLS証明書の設定や更新。

APIはRESTfulであり、HTTPリクエストを通じて操作します。JSON形式でデータを送受信し、APIトークンまたはAPIキーを使って認証します。
これにより、開発者はCloudflareの機能を統合し、効率的にウェブサイトのパフォーマンスとセキュリティを管理できます。

以下、Cloudflare API 逆引き例

Workers Scriptの情報を取得する

curl --request GET \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'

スクリプトの内容を取得する

curl --request GET \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/content/v2 \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'

Settingを取得する

curl --request GET \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/script-settings \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'
curl --request GET \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/settings \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'

cron設定を取得する

curl --request GET \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/schedules \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'

Workersのスクリプトのコードを更新する

curl --request PUT \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name} \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/javascript' \
--data 'addEventListener('\''fetch'\'', (event) => event.respondWith(new Response('\''OK'\'')))'

cronスケジュール設定を更新する

curl --request PUT \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/schedules \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json' \
--data '[{"cron": "*/30 * * * *"}]'

※formリクエストでもできる

curl --request PATCH \
  --url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/settings \
  --header 'Authorization: Bearer {auth_token}' \
  --header 'Content-Type: multipart/form-data' \
  --form settings='{"triggers":{"crons":["0 0 * * *"]}}'

*.workers.devのデフォルトドメインを有効化する

curl --request POST \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/subdomain \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json' \
-d '{"enabled":true}'

Workersの実行ログをtailするようなWebSocketURLを取得する

curl --request POST \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/tails \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'

Workersのサブドメインを取得する

curl --request GET \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/subdomain \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: application/json'

環境変数を設定する

curl --request PATCH \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/settings \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: multipart/form-data' \
--form 'settings={ "bindings": [ { "name": "NEW_ENV_VAR4", "type": "plain_text", "text": "value4" } ] }'

secret環境変数を設定する

curl --request PATCH \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}/settings \
--header 'Authorization: Bearer {auth_token}' \
--header 'Content-Type: multipart/form-data' \
--form 'settings={ "bindings": [ { "name": "MASKED_ENV_VAR2", "type": "secret_text", "text": "XXXXXX2" } ] }'

以上です!
使っていて増えたら増やすかもです!

よいCloudflareライフを!

GitHubで編集を提案

Discussion