Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

呼び出し順序

最終更新 Markdown で表示Agent セットアップ

このサイトの API 呼び出し例は、2 つの API(Cloudflare Filters APIFirewall Rules API)を呼ぶ 推奨シーケンス を示しています。

次の図はこのシーケンスを表しており、ルールの作成と編集に適用できます。削除操作では逆順になります。

ルールの作成または編集時に Cloudflare Filters API と Firewall Rules API を呼ぶ推奨フロー

Cloudflare がこのシーケンスを推奨する理由は、フィルターの再利用がしやすく、どちらの API も独立して扱えるためです。Cloudflare Filters は独立しているため、同じフィルターを複数のファイアウォールルールや、今後の Cloudflare 製品・機能で共有できます。

たとえば、API 向けのすべてのトラフィックに一致するフィルター(http.request.uri.path matches "^/api/.*$")は、キャッシュの無効化、人間向け CAPTCHA の無効化、JSON カスタムエラーの設定、ファイアウォールルールへの掲載に使えます。上記の推奨シーケンスでは、手順 1〜2 で作成した同じフィルターに対して設定する Cloudflare 機能ごとに、手順 3〜6 を繰り返します。

一方、POST 操作では、次に示す 簡易シーケンス で、同じ呼び出し内にフィルターとルールの両方を作成できます。この場合、フィルターとルールは互いだけを参照します。

1 回の呼び出しでフィルターとルールの両方を作成する Firewall Rules API の基本フロー

このシーケンスでは、/firewall/rules エンドポイントへの 1 回の POST リクエストが JSON 内のフィルターオブジェクトを受け取り、Filters API 側でもフィルターを作成します(こちらも POST リクエスト)。成功すると、ファイアウォールルールが作成されます。

この方法を使った呼び出しとレスポンスの例は次のとおりです。

リクエストbash
curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/firewall/rules" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '[
  {
    "filter": {
      "expression": "http.request.uri.path contains \"/api/\" and ip.src eq 93.184.216.34"
    },
    "action": "block"
  }
]'
レスポンスjson
{
	"result": [
		{
			"id": "<RULE_ID>",
			"paused": false,
			"action": "block",
			"priority": null,
			"filter": {
				"id": "<FILTER_ID>",
				"expression": "http.request.uri.path contains \"/api/\" and ip.src eq 93.184.216.34",
				"paused": false
			}
		}
	],
	"success": true,
	"errors": [],
	"messages": []
}

ただし、この方法には次の欠点があります。

  • ファイアウォールルール側のクライアントは、Firewall Rules API と Filters API の両方で起こりうるすべての失敗に対して、エラー処理と例外処理を実装する必要があります。
  • 他の Cloudflare 機能が使っているフィルターを誤って変更または削除しないよう、PUT および DELETE 操作は許可されません。

デフォルトでは、フィルターまたはルールのいずれかが無効な場合、どちらも作成されません。

ただし例外が 1 つあります。ルールの上限を超えそうな場合、Cloudflare はフィルターだけを作成し、ファイアウォールルールは作成しないことがあります。シーケンス図では、ルールはフィルターのあとに作成されるためです。

上限超過を解消したあと、またはゾーンで利用できない機能を要求していた問題を解消したあと、推奨フローに戻り、そのフィルターを参照するルールを作成します。

まとめると、Cloudflare は 2 回の API 呼び出しによるシーケンスを強く推奨します。簡易シーケンスでのルールとフィルター作成は緊急時に限り、curl リクエストのみで行ってください。

役に立ちましたか?