Skip to content

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

レコードの一括変更

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

Cloudflare では、ゾーンのレコードに対する複数の変更を 1 回の操作で適用できます。ダッシュボード では DNS レコードの削除や プロキシステータス の一括更新ができ、API ではさらに幅広い一括操作ができます。

提供状況と上限

DNS レコードの一括変更は、すべてのプランで利用できます。

1 回の操作で扱えるレコード数は、ゾーンのプランによって異なります。

  • Free: 200
  • Pro: 3,500
  • Business: 3,500
  • Enterprise: 3,500

ダッシュボードを使う

プロキシステータスを一括編集する

AAAAACNAME レコードは プロキシ できます。DNS レコードの Proxy status は、そのレコードへの DNS クエリに対する Cloudflare の応答 に影響します。

  1. Cloudflare ダッシュボードで DNS Records ページを開きます。

    Records を開く ↗
  2. プロキシステータスを設定する DNS レコードを選択します。プロキシできるのは AAAAACNAME レコードだけです。

  3. Edit records を選択します。

  4. 選択したレコードに適用するプロキシステータスを選びます。

  5. 確定するには Save を選択します。

一括操作では、レコードを Proxied または DNS only のどちらかにしか設定できません。選択にプロキシ済みと DNS only のレコードが混在している場合、一部だけが更新され、ほかは元の値のままになります。

たとえば、次のレコードを選択してプロキシステータスを一括編集し、上記の手順 4Proxied を選んだ場合の結果は次のとおりです。

選択したレコード 元のプロキシステータス 変更後のプロキシステータス
www DNS only Proxied
blog DNS only Proxied
docs Proxied Proxied

レコードを一括削除する

  1. Cloudflare ダッシュボードで DNS Records ページを開きます。

    Records を開く ↗
  2. 削除する DNS レコードを選択します。

  3. Delete records を選択します。

  4. Delete DNS records の確認で DELETE と入力し、Delete を選択して確定します。

API を使う

Batched DNS record changes エンドポイントでは、1 回のリクエストで DELETESPATCHESPUTSPOSTS を実行できます。

タグとコメント も、一括変更で使えます。

/batch リクエスト本文で指定した操作は、常に次の順で実行されます。

  1. Deletes
  2. Patches
  3. Puts
  4. Posts

この 4 つのリストの中では、指定した DNS レコードの順に各操作が実行されます。いずれかの操作が失敗すると、変更は適用されず、API は最初に遭遇したエラーを返します。

検討事項

/batch リクエスト本文に列挙する各操作について、必要な情報と、未指定フィールドの扱いを確認してください。

  • deletes: 各レコードオブジェクトで必要なのは id だけです。読みやすさのために name などの追加パラメーターを残しても構いませんが、この場合 id 以外のフィールドは無視されます。
  • patches: 各レコードの id に加えて、更新するフィールドを指定します。指定していないフィールドはそのまま残ります。
  • puts: 各レコードの idcontentnametype を指定する必要があります。デフォルト以外の値にしたいフィールドも指定してください。指定していないフィールドは、各 レコードタイプ のデフォルト値になります。この操作は上書きなので、対象レコードのすべてのフィールドが常に影響を受けます。
  • 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
        }
    ]
}

役に立ちましたか?