Cloudflare 允许您在一次操作中应用 zone 记录的多个变更。您可以使用仪表板批量删除 DNS 记录或更新其代理状态,或使用 API执行更多批量操作。
批量 DNS 记录变更在所有套餐上可用。
一次操作中可操作的记录数量取决于您的 zone 套餐:
- Free:200
- Pro:3,500
- Business:3,500
- Enterprise:3,500
A、AAAA 和 CNAME 记录可以被代理。DNS 记录的 Proxy status(代理状态) 影响 Cloudflare 如何响应对该记录的 DNS 查询。
-
在 Cloudflare 仪表板中,转到 DNS Records(DNS 记录) 页面。
Go to Records ↗ -
选择要设置代理状态的 DNS 记录。请注意,只有
A、AAAA和CNAME记录可以被代理。 -
选择 Edit records(编辑记录)。
-
选择要应用于所选记录的代理状态。
-
选择 Save(保存) 确认。
您只能批量将记录设置为 Proxied(已代理) 或 DNS only(仅 DNS)。这意味着如果您的选择同时包括代理和仅 DNS 记录,其中一些将更新代理状态,而其他将保持原始值:
例如,如果您选择以下记录并在上述步骤 4中批量编辑其代理状态,选择 Proxied(已代理),结果将是:
| 所选记录 | 原始代理状态 | 结果代理状态 |
|---|---|---|
www |
DNS only(仅 DNS) | Proxied(已代理) |
blog |
DNS only(仅 DNS) | Proxied(已代理) |
docs |
Proxied(已代理) | Proxied(已代理) |
-
在 Cloudflare 仪表板中,转到 DNS Records(DNS 记录) 页面。
Go to Records ↗ -
选择要删除的 DNS 记录。
-
选择 Delete records(删除记录)。
-
在 Delete DNS records(删除 DNS 记录) 提示中,输入
DELETE并选择 Delete(删除) 确认。
Batched DNS record changes 端点允许您在单个请求中触发 DELETES、PATCHES、PUTS 和 POSTS 的执行。
标签和注释也支持批量变更。
您在 /batch 请求正文中指定的操作始终按以下顺序执行:
- Deletes
- Patches
- Puts
- Posts
在每个列表中,每个单独的操作按照您提供的 DNS 记录顺序执行。如果任何单独的操作失败,不会应用任何变更,API 返回遇到的第一个错误。
对于您在 /batch 请求正文中列出的每个操作,请考虑所需信息以及未指定字段的行为:
deletes:每个记录对象只需要id。您可以保留name等额外参数以提高可读性,但除id外的其他字段将被忽略。patches:除每个记录id外,您应指定要更新的字段。所有未指定的字段将保持不变。puts:您必须指定每个记录id、content、name和type。您还应指定要设置为非默认值的任何其他字段。任何未指定的字段将假设每个记录类型的默认值。此操作作为覆盖,因此给定记录中的所有字段始终受影响。posts:由于您正在创建新记录,不需要id。有关字段定义,请参阅 Create DNS Record 端点并在请求正文规范下选择所需的记录类型。
在此示例中,"puts" 下第一个记录列出的 proxied 字段将假设默认值(false)。
{
"deletes": [
{
"id": "2bff0ebc4df64beaa44b0dca93e37a28"
},
{
"id": "31d1d6e79ce04b8d93cbc5a13401d728"
}
],
"patches": [
{
"id": "62276440f783445380480484648c1017",
"content": "192.0.2.46"
},
{
"id": "c942d948dc2343b9b97aed78479c9fb9",
"name": "update.example.com",
"proxied": true
}
],
"puts": [
{
"id": "a50364543094428abde0f14061d42b0e",
"content": "192.0.2.50",
"name": "change.example.com",
"type": "A",
"ttl:": 1
},
{
"id": "3bce0920f19d43949498bd067b05dfa9",
"content": "192.0.2.45",
"name": "no-change.example.com",
"type": "A",
"proxied": false,
"ttl:": 3000
}
],
"posts": [
{
"name": "@",
"type": "A",
"content": "192.0.2.41",
"proxied": false,
"ttl": 3000
},
{
"name": "a.example.com",
"type": "A",
"content": "192.0.2.42",
"proxied": true
}
]
}