Cloud DNS API の DNS レコードを管理するには、2 つの代替 API エンドポイント(Changes
、ResourceRecordSets
)のいずれかを使用します。
Changes
API では、既存のリソース レコード セットを削除して新しいリソース レコード セットを追加する必要がありますが、ResourceRecordSets
API を使用するとリソース レコード セットを置き換えることができます。
このページでは、Changes
API と ResourceRecordSets
API を使用してリソース レコード セットを追加、削除、更新する方法と、import
、export
、transaction
の各コマンドを使用して API に目的の変更を送信する方法を説明します。
始める前に
すでにマネージド ゾーンを作成しており、ゾーンを作成するための前提条件を完了している必要があります。
レコードセットの DNS レコードは、実行する操作を定めるトランザクションを作成し、実行することによって追加や削除が可能です。トランザクションは、相互に伝播する必要がある 1 つ以上のレコード変更のグループです。トランザクション全体が成功または失敗のいずれかになるため、データが中間状態のままになることはありません。
DNS レコードタイプの詳細については、サポートされている DNS レコードの種類の一覧をご覧ください。
レコードを追加する
レコードを追加するときに、同じ DNS 名のレコードセットに 2 つの値または文字列を追加できます。レコードセットを追加するときは、最初の値と 2 番目の値の間にスペースを追加する必要があります。
Console
レコードセットを作成する手順は次のとおりです。
Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。
レコードを追加するマネージド ゾーンの名前をクリックします。
[ゾーンの詳細] ページで、[標準を追加] をクリックします。
[レコードセットの作成] ページの [DNS 名] フィールドに、DNS ゾーンのサブドメインを入力します(例:
mail
)。末尾にドットが自動的に追加されます。ワイルドカード DNS レコードを作成するには、アスタリスクを入力します(例:
*.example.com
)。リソース レコードのタイプ(例:
MX
)を選択します。[TTL] フィールドに、リソース レコードの有効期間を数値で入力します。これはキャッシュに保存できる時間です。この値は正の整数である必要があります
[TTL ユニット] メニューから、時間の単位(例:
30 minutes
)を選択します。選択したリソース レコードのタイプに応じて、残りのフィールドに値を入力します。
追加情報を入力するには、[項目を追加] をクリックします。
[作成] をクリックします。
gcloud
トランザクションを開始するには、
gcloud dns record-sets transaction start
コマンドを使用します。gcloud dns record-sets transaction start \ --zone=MANAGED_ZONE
MANAGED_ZONE
は、レコードセットを管理するマネージド ゾーン名で置き換えます(例:my-zone-name
)。レコードセットをトランザクションの一部として追加するには、
gcloud dns record-sets transaction add
コマンドを使用します。gcloud dns record-sets transaction add RR_DATA \ --name=DNS_NAME \ --ttl=TTL \ --type=RECORD_TYPE \ --zone=MANAGED_ZONE
以下を置き換えます。
RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。DNS_NAME
: 追加するレコードセットの DNS またはドメイン名(例:test.example.com
)TTL
: レコードセットの有効期間(TTL)の秒数(例:300
)RECORD_TYPE
: レコードタイプ(例:A
)MANAGED_ZONE
: レコードセットを管理するマネージド ゾーンの名前(例:my-zone-name
)
トランザクションを実行するには、
gcloud dns record-sets transaction execute
コマンドを使用します。gcloud dns record-sets transaction execute \ --zone=MANAGED_ZONE
ワイルドカード トランザクションを追加するには、
gcloud dns record-sets transaction add
コマンドを使用します。gcloud dns record-sets transaction add \ --zone=MANAGED_ZONE \ --name=WILDCARD_DNS_NAME \ --type=RECORD_TYPE \ --ttl=TTL
以下を置き換えます。
MANAGED_ZONE
: レコードセットを管理するマネージド ゾーンの名前(例:my-zone-name
)WILDCARD_DNS_NAME
: 追加するレコードセットの DNS またはドメイン名(例:*.example.com.
。末尾のドットに注意)RECORD_TYPE
: レコードタイプ(例:CNAME
)TTL
: レコードセットの TTL の秒数(例:300
)
Terraform
API
新しいリソース レコード セットを含むトランザクションを更新するには、changes.create
メソッドを使用します。
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/changes
{ "deletions": [] "additions": [ { "name": DNS_NAME, "type": RECORD_TYPE, "ttl": TTL, "rrdatas": [ RR_DATA ] } ] }
以下を置き換えます。
PROJECT_ID
: プロジェクト IDMANAGED_ZONE
: マネージド ゾーン名または IDDNS_NAME
: レコードセットの DNS またはドメイン名(例:test.example.com.
。末尾のドットに注意)RECORD_TYPE
: レコードタイプTTL
: レコードセットの有効期間(TTL)の秒数(例:30
)RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。
レコードを削除する
コンソール
レコードやレコードセットを削除する手順は次のとおりです。
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
削除するレコードセットがあるゾーン名をクリックします。[ゾーンの詳細] ページにゾーンのレコードが一覧表示されます。
削除するレコードの横にあるチェックボックスをオンにします。
[レコードセットを削除] をクリックします。
gcloud
トランザクションを削除するには、gcloud dns record-sets transaction remove
コマンドを使用します。
gcloud dns record-sets transaction remove RR_DATA \ --name=DNS_NAME \ --ttl=TTL \ --type=RECORD_TYPE \ --zone=MANAGED_ZONE
以下を置き換えます。
RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。DNS_NAME
: 削除するレコードセットの DNS またはドメイン名(例:test.example.com
)TTL
: レコードセットの TTL の秒数(例:30
)RECORD_TYPE
: レコードタイプ(例:A
)MANAGED_ZONE
: マネージド ゾーンの名前
既存のレコードを置き換えるには、remove
コマンドの後に add
コマンドを実行します。
API
削除されたリソース レコード セットを含むトランザクションを更新するには、changes.create
メソッドを使用します。
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/changes
{ "deletions": [ { "name": DNS_NAME, "type": RECORD_TYPE, "ttl": TTL, "rrdatas": [ RR_DATA ] } ] "additions": [] }
以下を置き換えます。
PROJECT_ID
: プロジェクト IDMANAGED_ZONE
: マネージド ゾーン名または IDDNS_NAME
: レコードセットの DNS またはドメイン名(例:test.example.com.
。末尾のドットに注意)RECORD_TYPE
: レコードタイプTTL
: レコードセットの TTL の秒数(例:30
)RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。
レコードセットのインポートとエクスポート
レコードセットをマネージド ゾーンの内外にコピーするには、import
と export
を使用します。インポートおよびエクスポートできる形式は、BIND ゾーンファイル形式または YAML レコード形式のいずれかです。
gcloud
レコードセットをインポートするには、
dns record-sets import
コマンドを使用します。--zone-file-format
フラグは、import
に BIND ゾーン形式のファイルが想定されていることを伝えます。このフラグを省略すると、import
は YAML 形式のレコード ファイルを想定します。gcloud dns record-sets import -z=examplezonename \ --zone-file-format path-to-example-zone-file
gcloud dns record-sets import
コマンドを使用するときに、--replace-origin-ns
を指定すると、ゾーンの NS レコードがゾーンファイルで指定された NS レコードに置き換わります。これらのレコードは、Cloud DNS がゾーンをホストするために割り当てたネームサーバーと一致する必要があります。また、親(委任)ゾーンで指定された NS レコードと一致する必要もあります。デフォルトでは、Cloud DNS は NS レコードを上書きしません。このフラグを使用する場合は、NS レコードが正しいことを確認する必要があります。Cloud DNS によって、同じネームサーバーに割り当てられた同じゾーンの以前のエクスポートから取得されたものである必要があります。レコードセットをエクスポートするには、
dns record-sets export
コマンドを使用します。レコードセットを BIND ゾーン形式のファイルにエクスポートするには、--zone-file-format
フラグを使用します。次に例を示します。example.com. 21600 IN NS ns-gcp-private.googledomains.com. example.com. 21600 IN SOA ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300 host1.example.com. 300 IN A 192.0.2.91
--zone-file-format
フラグを省略すると、export
はレコードセットを YAML 形式のレコード ファイルにエクスポートします。gcloud dns record-sets export example.zone -z=examplezonename
次に例を示します。
--- kind: dns#resourceRecordSet name: example.com. rrdatas: - ns-gcp-private.googledomains.com. ttl: 21600 type: NS --- kind: dns#resourceRecordSet name: example.com. rrdatas: - ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300 ttl: 21600 type: SOA --- kind: dns#resourceRecordSet name: host1.example.com. rrdatas: - 192.0.2.91 ttl: 300 type: A
現在のレコードセットを表示する
ゾーンの現在の DNS レコードを表示するには、gcloud dns record-sets list
コマンドを使用します。
gcloud
ゾーンの現在の DNS レコードを表示するには、gcloud dns record-sets list
コマンドを使用します。
gcloud dns record-sets list \ --zone="myzonename"
このコマンドは、最初の 100 件のレコードについてリソース レコードセットの JSON レスポンスを出力します。次の追加のパラメータを指定できます。
--limit
: 表示されるレコードセットの最大数。--name
: このドメイン名と完全に一致するレコードセットのみをリスト表示します。--type
: このタイプのレコードのみを一覧表示します。指定する場合は、--name
パラメータも指定する必要があります。
リソース レコードセットを作成する
コンソール
リソース レコードセットを作成する手順は次のとおりです。
Google Cloud コンソールで、[Cloud DNS] ページに移動します。
リソース レコードセットを作成するゾーンをクリックします。
[ゾーンの詳細] ページで、[標準を追加] をクリックします。
レコードセットの DNS 名を入力します(例:
test.example.com
)。リソース レコードのタイプを選択します。
リソース レコードセットの有効期間(TTL)を入力します(例:
30
)。[TTL ユニット] を選択します(例:
minutes
)。選択したレコードタイプに基づいて詳細を入力します。
[作成] をクリックします。
gcloud
リソース レコードセットを作成するには、gcloud dns record-sets create
コマンドを使用します。
gcloud dns record-sets create RRSET_NAME \ --rrdatas=RR_DATA \ --ttl=TTL \ --type=RRSET_TYPE \ --zone=MANAGED_ZONE
以下を置き換えます。
RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。TTL
: リゾルバがこのリソース レコードセットをキャッシュに保存する秒単位の TTL(例:30
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)MANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。
API
リソース レコードセットを作成するには、resourceRecordSets.create
メソッドを使用します。
POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets { "name": RRSET_NAME, "type": RRSET_TYPE, "ttl": TTL, "rrdatas": RR_DATA }
以下を置き換えます。
PROJECT_ID
: プロジェクトの IDMANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)TTL
: リゾルバがこのリソース レコードセットをキャッシュに保存する秒単位の TTL(例:30
)RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。
Terraform
リソース レコードセットの詳細を表示する
この手順では、同じ名前とタイプを使用するマネージド ゾーン内にリソース レコードセットを作成したことを前提としています。
Console
既存のリソース レコードセットの詳細を表示する手順は次のとおりです。
Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。
リソース レコードセットを表示するゾーンをクリックします。
[ゾーンの詳細] ページに、そのゾーンのすべてのリソース レコードセットの詳細が表示されます。
gcloud
既存のリソース レコードセットの詳細を表示するには、gcloud dns record-sets describe
コマンドを使用します。
gcloud dns record-sets describe RRSET_NAME \ --type=RRSET_TYPE \ --zone=MANAGED_ZONE
以下を置き換えます。
RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)MANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。
API
既存のリソース レコードセットの詳細を取得するには、resourceRecordSets.get
メソッドを使用します。
GET https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE
以下を置き換えます。
PROJECT_ID
: プロジェクトの IDMANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)
リソース レコードセットにパッチを適用する
コンソール
既存のリソース レコードセットに部分更新を適用する手順は次のとおりです。
Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。
リソース レコードセットを更新するゾーンをクリックします。
[ゾーンの詳細] ページで、更新するリソース レコードセットの横にある [edit 編集] をクリックします。
必要な更新を行った後、[保存] をクリックします。
gcloud
既存のリソース レコードセットに部分更新を適用するには、gcloud dns record-sets update
コマンドを使用します。
gcloud dns record-sets update RRSET_NAME \ --rrdatas=RR_DATA \ --ttl=TTL \ --type=RRSET_TYPE \ --zone=MANAGED_ZONE
以下を置き換えます。
RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。TTL
: リゾルバがこのリソース レコードセットをキャッシュに保存する秒単位の TTL(例:30
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)MANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。
API
既存のリソース レコードセットに部分更新を適用するには、resourceRecordSets.patch
メソッドを使用します。
PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE { "ttl": TTL, "rrdatas": RR_DATA, "update_mask": { "paths": ["rrset.ttl", "rrset.rrdatas"] } }
以下を置き換えます。
PROJECT_ID
: プロジェクトの IDMANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)TTL
: リゾルバがこのリソース レコードセットをキャッシュに保存する秒単位の TTL(例:30
)RR_DATA
: リソース レコードセットに関連付けられた任意の値(例:198.51.100.5
)。rrdata1
rrdata2
rrdata3
のように、複数の値を入力することもできます(例:198.51.100.5
10.2.3.4
...)。
リソース レコードセットを削除する
コンソール
既存のリソース レコードセットを削除する手順は次のとおりです。
Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。
リソース レコードセットを削除するゾーンをクリックします。
[ゾーンの詳細] ページで、削除するリソース レコードセットの DNS 名の横にあるチェックボックスをオンにします。
[レコードセットを削除] をクリックします。
gcloud
既存のリソース レコードセットを削除するには、gcloud dns record-sets delete
コマンドを使用します。
gcloud dns record-sets delete RRSET_NAME \ --type=RRSET_TYPE \ --zone=MANAGED_ZONE
以下を置き換えます。
RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)MANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。
API
既存のリソース レコードセットを削除するには、resourceRecordSets.delete
メソッドを使用します。
DELETE https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE
以下を置き換えます。
PROJECT_ID
: プロジェクトの IDMANAGED_ZONE
: このリソース レコードセットが関連しているマネージド ゾーン(例:my-zone-name
)。このリソース レコードセットの名前には、サフィックスとしてマネージド ゾーンの DNS 名が必要です。RRSET_NAME
: サフィックスとしてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例:test.example.com
)RRSET_TYPE
: このリソース レコードセットのリソース レコードタイプ(例:A
)
リソース レコード タイプを選択する
レコードタイプ | 入力 |
---|---|
A |
ホストの数値アドレス(IPv4 のドット付き 10 進数形式)。 |
AAAA |
ホストの数値 IP アドレス(IPv6 の 16 進数形式) |
ALIAS (プレビュー) |
受信アドレスクエリを解決する正規名(例: |
CAA |
このドメインの証明書を発行する権限のある認証局(例:
権限のない CA がドメインに証明書を発行しないように、 |
CNAME |
また、
ネームサーバーが、CNAME 値によって参照される |
DNSKEY |
ZSK 鍵と KSK 鍵でレコードの信頼性を検証するためにリゾルバが使用する DNSSEC 公開鍵(例:
このレコードタイプは、 |
DS |
安全な委任ゾーンの DNSSEC キー フィンガープリント( このレコードタイプは、一般公開ゾーンでのみ追加できます。このレコード セットタイプは、委任されたゾーンに対して DNSSEC を有効にしません。有効にするには、このゾーンに対して DNSSEC を手動で有効にする必要があります。デフォルトでは、DNSSEC はゾーンで有効になっていません。 |
HTTPS 、SVCB |
サービスの優先度( |
IPSECVPNKEY |
IPsec 公開 VPN キー。 このレコードタイプは、一般公開ゾーンでのみ追加できます。 |
MX |
ドメインに代わってメールを受信するメール交換サーバーの優先値と DNS 名。SMTP サーバーでは、優先値の低いサーバーが優先されます。 例: 優先番号と DNS 名の間には、1 個のスペースを入れてください。入力する MX レコードの末尾は、ピリオドまたはドット( 優先度の異なる複数のレコードを作成してバックアップ メールサーバーを構成できます。また、同じ優先度を使用して複数のメールサーバーに負荷を分散することもできます。 たとえば、メールを Google Workspace アカウントに転送するには、次のように入力します。
|
NAPTR |
Dynamic Delegation Discovery System(DDDS)アプリケーションによって Uniform Resource Name(URN)をマッピングするために使用される Naming Authority Pointer ルール(例:
|
NS |
ドメインまたはサブドメインに DNS サービスを提供する権威ネームサーバーの DNS 名。 |
PTR |
完全修飾ドメイン名(FQDN)か、IP アドレスにマッピングされるドメインの正規名(例:
通常、 |
SPF |
|
SRV |
特定のサービスのサーバーの場所(ホスト名とポート番号)を指定するデータ(例: 詳細については、RFC 2782 をご覧ください。 |
SSHFP |
SSH サーバーのアルゴリズム番号、フィンガープリントの種類を表す番号、キー フィンガープリント(例: このゾーンの DNSSEC を有効にしている場合にのみ、このレコードタイプを使用してください。 |
TLSA |
名前付きエンティティの DNS ベースの認証(DANE)TLSA 証明書アソシエーションの情報。
TLSA レコードには、事前に構成されている一連の認証局(CA)に依存せずに X.509 証明書(HTTPS で使用される証明書など)の検証に使用される情報が含まれます(例: このゾーンの DNSSEC を有効にしている場合にのみ、このレコードタイプを使用してください。 |
TXT |
テキストデータ。任意のテキストを含めることができ、セキュリティ情報や不正防止情報などのマシンが読み取れるデータを定義するためにも使用できます。 TXT レコードには 1 つ以上のテキスト文字列を含めることができ、各文字列の最大長は 255 文字です。レコードデータが 255 バイトを超える場合は、レコードを 255 バイトの文字列に分割し、各文字列を引用符で囲みます(例: 複数の文字列がある場合は、メール エージェントや他のソフトウェア エージェントによって連結されます。 各文字列は引用符で囲みます(例: 各 TXT レコードの文字数の上限は 1,000 です。この上限を増やす必要がある場合は、Google Cloud サポートにお問い合わせください。 |
次のステップ
- レコードセットの
gcloud
コマンドに関する情報については、gcloud dns record-sets
をご覧ください。 gcloud
または API オペレーションのステータスを確認するには、DNS 伝播のモニタリングをご覧ください。- API 情報にアクセスするには、
Changes
API メソッドをご覧ください。 - Cloud DNS の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。
- Cloud DNS の概要については、Cloud DNS の概要をご覧ください。