google_dns_record_set cost estimation
A DNS record set is essentially free to define. Cloud DNS bills per managed zone per month and per million queries, so cost scales with zones and query volume, not with individual records.
A google_dns_record_set is a single DNS record (A, AAAA, CNAME, MX, TXT, and so on) inside a Cloud DNS managed zone. Cloud DNS does not bill per record. Creating and updating record sets is free; the two things Cloud DNS charges for are managed zones and queries.
Managed zones bill a small flat rate per zone per month for the first batch of zones, dropping per zone above that. Queries bill per million, tiered so the rate falls as volume rises. So the cost tied to your records is really the cost of the zone that holds them and the query traffic they attract. A record for a popular apex domain can drive far more queries, and therefore more cost, than a record for an internal service, even though the record set itself is identical.
Records that point at other GCP resources also carry indirect cost: an A record pointing at a static external IP relies on that address (billable if reserved and unused), and a record fronting a load balancer's IP sends traffic to a paid forwarding rule. c3x prices the managed zone and expected query volume and treats each record set as free, while flagging the priced targets a record points at.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "google_dns_record_set" "api" {
name = "api.example.com."
managed_zone = google_dns_managed_zone.example.name
type = "A"
ttl = 300
rrdatas = [google_compute_global_address.app.address]
}Pricing dimensions
What you actually pay for when you provision google_dns_record_set.
| Dimension | Unit | What's being charged |
|---|---|---|
| Record set | free | Individual DNS records are free to create and update. Cloud DNS does not bill per record. $0 |
| Managed zone | per zone-month | The zone that holds the records bills a flat monthly rate, tiered down as you add zones. ~$0.20/zone-month (first 25 zones) |
| DNS queries | per million queries | Queries against the zone bill per million, tiered lower as volume rises. ~$0.40 per million (first 1B/month) |
Optimization tips
Common ways to reduce google_dns_record_set cost without changing the workload.
Raise TTLs to cut query volume
Fewer billable queriesLonger TTLs let resolvers cache answers longer, reducing the queries that reach Cloud DNS and the per-million charge. Use short TTLs only where fast failover is needed.
Consolidate records into fewer zones
Cost is per zone, not per record. Keeping many records in one zone avoids paying the per-zone monthly fee for zones that hold only a handful of records.
Release IPs behind retired records
A record pointing at a reserved static IP keeps that address in use. When retiring the record, release the address too so it does not bill as an unused reservation.
FAQ
Does a Cloud DNS record cost money?
Not per record. Cloud DNS bills per managed zone per month and per million queries. Individual record sets are free to create and update; cost scales with zones and query volume.
What drives Cloud DNS cost the most?
Query volume for high-traffic domains and the number of managed zones. A popular apex record can generate millions of queries, so TTL tuning and zone consolidation are the main levers.
How do I estimate Cloud DNS cost?
Count managed zones times the per-zone monthly rate, plus expected queries per million. c3x prices the zone and query volume and treats individual record sets as free.
Related resources
google_compute_addressThe static IP an A record often points at, billable if reserved and unused.
google_compute_global_forwarding_ruleThe load balancer IP a record fronts, which carries the real traffic cost.
google_cloud_run_serviceA common record target for custom domains on serverless services.
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including google_dns_record_set.