Cloudflare API で Snippets を作成できます。
Snippets を管理する API リクエストで使う API トークン には、少なくとも次の権限が必要です。
- Zone > Snippets > Edit
次の Cloudflare API ベース URL に、下表の Snippets エンドポイントを付けて完全なエンドポイントにします。
https://api.cloudflare.com/client/v4{zone_id} 引数は ゾーン ID(16 進文字列)です。この値は Cloudflare ダッシュボードで確認できます。
利用できる操作は次の表のとおりです。
| 操作 | Verb + Endpoint |
|---|---|
| コードスニペットを一覧する | GET /zones/{zone_id}/snippets |
| コードスニペットを作成 / 更新する | PUT /zones/{zone_id}/snippets/{snippet_name} |
| コードスニペットの詳細を取得する | GET /zones/{zone_id}/snippets/{snippet_name} |
| コードスニペットの内容を取得する | GET /zones/{zone_id}/snippets/{snippet_name}/content |
| コードスニペットを削除する | DELETE /zones/{zone_id}/snippets/{snippet_name} |
| スニペットルールを一覧する | GET /zones/{zone_id}/snippets/snippet_rules |
| スニペットルールを作成 / 更新 / 削除する | PUT /zones/{zone_id}/snippets/snippet_rules |
| スニペットルールをすべて削除する | DELETE /zones/{zone_id}/snippets/snippet_rules |
Snippets を作成または更新するには、次の PUT リクエストを使います。スニペット名は $SNIPPET_NAME で、本文に JavaScript コードを含めます。
Required API token permissions
At least one of the following token permissions is required:Snippets Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/snippets/$SNIPPET_NAME" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--form "[email protected]" \
--form "metadata={\"main_module\": \"example.js\"}"スニペット名に使える文字は a-z、0-9、_(アンダースコア)だけです。名前はゾーン内で一意である必要があります。作成後にスニペット名は変更できません。
必須の本文パラメーターは次のとおりです。
files: JavaScript コードを入れたファイル。metadata:main_moduleを含むオブジェクト。アップロードしたファイル名と一致させる必要があります。
この例を動かすには、JavaScript コードを example.js として保存し、example.js があるフォルダーから PUT リクエストの curl を実行します。
{
"errors": [],
"messages": [],
"success": true,
"result": {
"created_on": "2023-07-24-00:00:00",
"modified_on": "2023-07-24-00:00:00",
"snippet_name": "snippet_name_01"
}
}新しいスニペットをデプロイするには、スニペットルールを作成 する必要があります。スニペットルールの式が、スニペットコードの実行タイミングを決めます。
コードスニペットを作成したら、ルールに紐づけられます。snippet_rules エンドポイントへの次の PUT リクエストで行います。
Required API token permissions
At least one of the following token permissions is required:Snippets Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/snippets/snippet_rules" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"description": "Trigger snippet on specific cookie",
"enabled": true,
"expression": "http.cookie eq \"a=b\"",
"snippet_name": "snippet_name_01"
}
]
}'