Add, update, and delete records

This page describes how to add, update, and delete resource record sets.

To view the list of supported resource record types, seeDNS records overview.

Permissions required for this task

To perform this task, you must have been granted the following permissionsor the following IAM roles.

Permissions

  • dns.resourceRecordSets.create to create a resource record set
  • dns.resourceRecordSets.delete to delete a resource record set
  • dns.resourceRecordSets.get to retrieve a resource record set
  • dns.resourceRecordSets.list to list a resource record set
  • dns.changes.create to update aResourceRecordSet collection
  • dns.changes.get to fetch the representation of an existingChange
  • dns.changes.list to list changes to aResourceRecordSet collection

Roles

  • roles/dns.admin

Before you begin

You must have or create a managed zone before you can create a resource recordset. For details about how to create a managed zone, in which you can createyour resource record set, seeCreate a managed zone.

Add a resource record set

To add a resource record set, follow these steps:

Console

  1. In the Google Cloud console, go to theCloud DNS zones page.

    Go to Cloud DNS zones

  2. Click the name of the managed zone that you want to add the record to.

  3. On theZone details page, clickAdd standard.

  4. On theCreate record set page, in theDNS name field, enterthe subdomain of the DNS zone—for example,mail. The trailingdot is automatically added at the end.

    To create a wildcard DNS record, enter an asterisk—for example,*.example.com.

    The at sign (@) does not automatically create an apex record.To create a resource record at the domain apex, leave theDNS namefield blank.

  5. Select theResource record type—for example,MX.

  6. In theTTL field, enter a numeric value for the resource record'stime to live, which is the amount of time that it can be cached. Thisvalue must be a positive integer.

  7. From theTTL unit menu, select the unit of time—for example,minutes.

  8. Depending on the resource record type that you have selected,populate the remaining fields.

  9. To enter additional information, clickAdd item.

  10. ClickCreate.

gcloud

To add a resource record set, use thegcloud dns record-sets create command:

gcloud dns record-sets createRRSET_NAME \    --rrdatas=RR_DATA \    --ttl=TTL \    --type=RRSET_TYPE \    --zone=MANAGED_ZONE

Replace the following:

  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RR_DATA: an arbitrary value associated with the resourcerecord set—for example,198.51.100.5; you can also enter multiplevalues,rrdata1rrdata2rrdata3—for example,198.51.100.510.2.3.4...
  • TTL: the TTL in seconds that the resolver caches thisresource record set—for example,30
  • RRSET_TYPE: theresource record typeof this resource record set—for example,A.
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix

API

To add a resource record set, use theresourceRecordSets.create methodmethod:

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets{    "name": "RRSET_NAME",    "type": "RRSET_TYPE",    "ttl":TTL,    "rrdatas": [RR_DATA ]}

Replace the following:

  • PROJECT_ID: the ID of the project
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix
  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RRSET_TYPE: theresource record typeof this resource record set—for example,A
  • TTL: the TTL in seconds that the resolver caches thisresource record set—for example,30
  • RR_DATA: an arbitrary value associated with the resourcerecord set—for example,"198.51.100.5"; you can also entermultiple values in a comma-separated list—for example,"198.51.100.5","10.2.3.4".

Terraform

resource "google_dns_managed_zone" "parent_zone" {  name        = "sample-zone"  dns_name    = "sample-zone.hashicorptest.com."  description = "Test Description"}resource "google_dns_record_set" "default" {  managed_zone = google_dns_managed_zone.parent_zone.name  name         = "test-record.sample-zone.hashicorptest.com."  type         = "A"  rrdatas      = ["10.0.0.1", "10.1.0.1"]  ttl          = 86400}

Add a collection of resource record sets in a transaction

You can add multiple resource record sets by creating a transaction thatspecifies the changes. A transaction is a group of one or more DNS recordchanges that must be applied as a unit. The entire transaction either succeedsor fails, ensuring your data is never left in an inconsistent state. You cancreate a transaction only by using the gcloud CLI or theCloud DNS API.

To create a transaction, follow these steps:

gcloud

  1. To start a transaction, use thegcloud dns record-sets transaction start command:

    gcloud dns record-sets transaction start \   --zone=MANAGED_ZONE

    ReplaceMANAGED_ZONE with the name of the managedzone whose resource record sets you want to manage—for example,my-zone-name.

  2. To add a resource record set as part of a transaction, use thegcloud dns record-sets transaction add command:

    gcloud dns record-sets transaction addRR_DATA \   --name=DNS_NAME \   --ttl=TTL \   --type=RECORD_TYPE \   --zone=MANAGED_ZONE

    Replace the following:

    • RR_DATA: an arbitrary value associated with theresource record set—for example,198.51.100.5; you can alsoenter multiple values,rrdata1rrdata2rrdata3—forexample,198.51.100.510.2.3.4...
    • DNS_NAME: the DNS or domain name of the record setto add—for example,test.example.com
    • TTL: the time to live (TTL) for the record set in numberof seconds—for example,300
    • RECORD_TYPE: therecord type—forexample,A.
    • MANAGED_ZONE: the name of the managed zone whoseresource record sets you want to manage—for example,my-zone-name
  3. To execute the transaction, use thegcloud dns record-sets transaction execute command:

    gcloud dns record-sets transaction execute \   --zone=MANAGED_ZONE
  4. To add a wildcard transaction, use thegcloud dns record-sets transaction add command:

    gcloud dns record-sets transaction add \   --zone=MANAGED_ZONE \   --name=WILDCARD_DNS_NAME \   --type=RECORD_TYPE \   --ttl=TTL

    Replace the following:

    • MANAGED_ZONE: the name of the managed zone whoseresource record sets you want to manage—for example,my-zone-name
    • WILDCARD_DNS_NAME: the DNS or domain name of theresource record set that you want to add—for example,*.example.com.(note the trailing dot)
    • RECORD_TYPE: therecord type—forexample,CNAME.
    • TTL: the TTL for the record set in numberof seconds—for example,300

API

To create a transaction with new resource record sets, use thechanges.create method:

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      ]    }  ]}

Replace the following:

  • PROJECT_ID: your project ID
  • MANAGED_ZONE: your managed zone name or ID
  • DNS_NAME: the DNS or domain name of the recordset—for example,test.example.com. (note the trailing dot)
  • RECORD_TYPE: therecord type
  • TTL: the time to live (TTL) for the record set in number ofseconds—for example,30
  • RR_DATA: an arbitrary value associated with the resourcerecord set—for example,198.51.100.5; you can also enter multiplevalues,rrdata1rrdata2rrdata3—for example,198.51.100.510.2.3.4...

To deliver email to your domain, you must addMX records to your zone. If youuse Google Workspace as your Simple Mail Transfer Protocol (SMTP) provider, seetheSet up Google WorkspaceMXrecords support page. Otherwise,use theMX record details from your provider and follow the setupprocess described for Google Workspace.

View resource record sets for a zone

To view resource record sets for a zone, follow these steps:

Console

  1. In the Google Cloud console, go to theCloud DNS page.

    Go to Cloud DNS

  2. On theZones tab, click the zone for which you want to view the resource record sets.

    TheZone details page shows the details of all the resource record setsin that zone.

gcloud

To view the DNS records for your zone, use thegcloud dns record-sets list command:

gcloud dns record-sets list \   --zone="ZONE_NAME"

ReplaceZONE_NAME with the name of a DNS zone inyour project.

The command outputs the JSON response for the resource record set forthe first 100 records. You can specify these additional parameters:

  • --limit: maximum number of record sets to list
  • --name: only list resource record sets with this exact domain name
  • --type: only list records of this type; if present, the--name parametermust also be present

API

To view the DNS records for your zone, use theresourceRecordSets.list method:

GET https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets

Replace the following:

  • PROJECT_ID: the ID of the project
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix

View details of a resource record set

This procedure assumes that you have already created a resource record setwithin the managed Cloud DNS zone.

To view the details of an existing resource record set, follow these steps:

Console

  1. In the Google Cloud console, go to theCloud DNS zones page.

    Go to Cloud DNS zones

  2. Click the zone that contains the resource record set.

  3. Click the resource record set for which you want to view the details.

    TheResource record set details page displays the details of the resourcerecord set.

gcloud

To view the details of an existing resource record set, use thegcloud dns record-sets describe command:

gcloud dns record-sets describeRRSET_NAME \  --type=RRSET_TYPE \  --zone=MANAGED_ZONE

Replace the following:

  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RRSET_TYPE: theresource record typeof this resource record set—for example,A.
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix

API

To get the details of an existing resource record set, use theresourceRecordSets.get method:

GET https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE

Replace the following:

  • PROJECT_ID: the ID of the project
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix
  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RRSET_TYPE: therecord typeof this resource record set—for example,A.

Update a resource record set

To modify a record set, follow these steps:

Console

To apply a partial update to an existing resource record set,follow these steps:

  1. In the Google Cloud console, go to theCloud DNS zonespage.

    Go to Cloud DNS zones

  2. Click the zone for which you want to update the resource record set.

  3. On theZone details page, next to the resource record set that youwant to update, clickEdit.

  4. After making the necessary updates, clickSave.

Note: You cannot enter conflicting data; for example, iftwo records have the same name, they must be of different types. The onlyexception is if one of them is aCNAME record, in which caseonly theCNAME record can exist.

gcloud

To apply a partial update to an existing resource record set, use thegcloud dns record-sets update command:

gcloud dns record-sets updateRRSET_NAME \    --rrdatas=RR_DATA \    --ttl=TTL \    --type=RRSET_TYPE \    --zone=MANAGED_ZONE

Replace the following:

  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RR_DATA: an arbitrary value associated with the resourcerecord set—for example,198.51.100.5; you can also enter multiplevalues,rrdata1rrdata2rrdata3—for example,198.51.100.510.2.3.4...
  • TTL: the TTL in seconds that the resolver caches thisresource record set—for example,30
  • RRSET_TYPE: theresource record typeof this resource record set—for example,A.
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix

API

To apply a partial update to an existing resource record set, usetheresourceRecordSets.patch method:

PATCH https://dns.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"]  }}
Note: Theupdate_mask is required when calling the API directly withoutgcloud.

Replace the following:

Delete resource record sets

When you delete resource record sets, their DNS records are permanently removed;they cannot be recovered. To prevent losing your DNS records, export theresource record sets before deletion. For information about howto export resource record sets, seeImport and export resource record sets.

Cloud DNS public zonesare authoritative, and the name server (NS) and start of authority (SOA)record types are located at the zone apex, which is the root of that domain.Cloud DNS automatically createsNS andSOA records at the zoneapex. These records can't be deleted by using the Cloud DNS APIand are automatically deleted when the zone is deleted. For more information,seeRFC 1034.

To delete resource record sets, follow these steps:

Console

  1. In the Google Cloud console, go to theCloud DNS page.

    Go to Cloud DNS zones

    Records for the zone are listed on theZone details page.

  2. To delete resource record sets in a zone, click the name of the zone.

  3. Next to the resource record sets that you want to delete, select the checkbox.

  4. ClickDelete record sets.

gcloud

To delete an existing resource record set, use thegcloud dns record-sets delete command:

gcloud dns record-sets deleteRRSET_NAME \    --type=RRSET_TYPE \    --zone=MANAGED_ZONE

Replace the following:

  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RRSET_TYPE: theresource record typeof this resource record set—for example,A.
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix

API

To delete an existing resource record set, use theresourceRecordSets.delete method:

DELETE https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE

Replace the following:

  • PROJECT_ID: the ID of the project
  • MANAGED_ZONE: the managed zone that thisresource record set is affiliated with—for example,my-zone-name;the name of this resource record set must have the DNS name of themanaged zone as its suffix
  • RRSET_NAME: the DNS name that matches the incomingqueries with this zone's DNS name as its suffix—for example,test.example.com
  • RRSET_TYPE: theresource record typeof this resource record set—for example,A.

Import and export resource record sets

To copy resource record sets into and out of a managed zone, you can useimport andexport commands. You can import from and export to either the BIND zone fileformat or the YAML file format.

gcloud

  1. To import a resource record set, use thedns record-sets import command:

    gcloud dns record-sets import -z=ZONE_NAME

    If you want to specify the file format of the zone file, use the previouscommand with the--zone-file-format flag. If you omit the flag, you mustprovide a YAML format zone file.

    ReplaceZONE_NAME with a new name for your zone.

  2. To export a resource record set, use thedns record-sets export command.To specify that the resource record sets are exported into a BINDzone-formatted file, use the--zone-file-format flag. For example:

    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 300host1.example.com. 300 IN A 192.0.2.91

    If you omit the--zone-file-format flag,export exports the resource record set into a YAML-formatted records file:

    gcloud dns record-sets export example.zone -z=examplezonename

    For example:

    ---kind:dns#resourceRecordSetname:example.com.rrdatas:-ns-gcp-private.googledomains.com.ttl:21600type:NS---kind:dns#resourceRecordSetname:example.com.rrdatas:-ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300ttl:21600type:SOA---kind:dns#resourceRecordSetname:host1.example.com.rrdatas:-192.0.2.91ttl:300type:A

    Cloud DNS supports theALIAS record type, which isn't a standard DNSrecord type and isn't supported inBIND. If you're exporting resource recordsets toBIND,ALIAS records are skipped. If a zone has a routing policy,it is exported as a record with empty resource record data (rrdata).

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.