コンテンツにスキップ

APIを介してルールを作成する

Rulesets APIを使用して、APIを介してキャッシュルールを作成します。CloudflareのAPIの設定については、APIドキュメントを参照してください。

基本的なルール設定

APIを介してキャッシュルールを作成する際は、以下の点に注意してください:

  • ルールアクションをset_cache_settingsに設定します。
  • action_parametersフィールドで、マッチするリクエストに対して上書きしたい設定に従ってパラメータを定義します。
  • ルールをhttp_request_cache_settingsフェーズエントリポイントルールセットにデプロイします。

手順

  1. List zone rulesetsメソッドを使用して、http_request_cache_settingsフェーズエントリポイントルールセットに既に存在するルールのリストを取得します。
  2. フェーズルールセットが存在しない場合は、Create a zone ruleset操作を使用して作成します。新しいルールセットのプロパティで、以下の値を設定します:
    • kind: zone
    • phase: http_request_cache_settings
  3. Update a zone ruleset操作を使用して、ルールセットのルールリストにキャッシュルールを追加します。あるいは、前のステップで言及したCreate a zone rulesetリクエストにルールを含めます。
  4. (オプション)既存のキャッシュルールを更新するには、Update a zone ruleset rule操作を使用します。例については、以下のセクションを参照してください。

例リクエスト

これらの例は、ゾーンのすべてのキャッシュルールを単一のルールに設定しています。これらの例を直接使用すると、既存のルールが削除されるため注意してください。

例: example.comのすべてをキャッシュする

リクエスト
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "example.comのすべてをキャッシュする",
"action": "set_cache_settings",
"action_parameters": {
"cache": true
}
}
]
}'

例: Androidクライアントの読み取りタイムアウトを延長する

リクエスト
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(http.user_agent contains \"Android\")",
"description": "Androidクライアントの読み取りタイムアウトを延長する",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"read_timeout": 300
}
}
]
}'

例: 頻繁に更新されるアセットのキャッシュリザーブを無効にする

リクエスト
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(starts_with(http.request.uri, \"/feed/\"))",
"description": "頻繁に更新されるアセットのキャッシュリザーブを無効にする",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"cache_reserve": {
"enabled": false
}
}
}
]
}'

例: デフォルトのキャッシュTTLをオフにする

リクエスト
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "デフォルトのキャッシュTTLをオフにする",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"edge_ttl": {
"mode": "bypass_by_default"
}
}
}
]
}'

例: 既存のルールの位置を更新する

リクエスト
curl --request PATCH \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"expression": "(http.host eq \"example.com\")",
"description": "example.comのすべてをキャッシュする",
"action": "set_cache_settings",
"action_parameters": {
"cache": true
}
"enabled": true,
"position": {
"before": "da5e8e506c8e7877fe06cdf4c41add54"
}
}'

必要なAPIトークンの権限

キャッシュルールを管理するためにAPIリクエストで使用されるAPIトークンは、以下の権限を持っている必要があります:

  • Zone > Cache Rules > Edit
  • Account Rulesets > Edit
  • Account Filter Lists > Edit