AzureAzure DNSNetworking

azurerm_private_dns_a_record cost estimation

A private DNS A record is free to declare; the cost lives on the Private DNS zone. The zone bills a small monthly hosting fee plus a per-million-queries charge that record lookups drive.

An azurerm_private_dns_a_record maps a hostname to one or more IPv4 addresses inside an Azure Private DNS zone, resolvable only from linked virtual networks. Declaring the record is free. Azure does not charge per record; billing is on the parent private DNS zone, which the record's lookups drive.

Private DNS zone cost has two parts. First, a small fixed hosting charge per zone per month, prorated, that covers the first block of records at no extra per-record fee. Second, a query charge billed per million DNS queries against the zone: every resolution of this A record from a workload in a linked VNet counts toward that meter. For most environments the query charge is trivial, but a chatty service that resolves the same name on every call instead of respecting DNS TTL can generate a surprising number of queries. Virtual network links that make the zone resolvable are themselves free; only the zone hosting and queries are billed.

The optimization is about query volume and zone consolidation: respect DNS TTLs so resolvers cache answers rather than re-querying, and keep related records in one zone rather than proliferating zones that each carry the monthly hosting fee. c3x prices the parent private DNS zone hosting and query volume and treats each A record as free.

Terraform example

A minimal but realistic configuration that C3X can estimate.

resource "azurerm_resource_group" "main" {
  name     = "dns-rg"
  location = "eastus"
}

resource "azurerm_private_dns_zone" "internal" {
  name                = "internal.example.com"
  resource_group_name = azurerm_resource_group.main.name
}

resource "azurerm_private_dns_a_record" "api" {
  name                = "api"
  zone_name           = azurerm_private_dns_zone.internal.name
  resource_group_name = azurerm_resource_group.main.name
  ttl                 = 300
  records             = ["10.0.1.10"]
}

Pricing dimensions

What you actually pay for when you provision azurerm_private_dns_a_record.

DimensionUnitWhat's being charged
A recordfreeThe record itself has no per-record charge; cost is billed on the parent private DNS zone.
$0
Private DNS zone hostingper zone-monthA small prorated monthly charge for hosting the zone, covering the first block of records.
~$0.50/zone per month for the first records
DNS queriesper million queriesEach resolution of the record from a linked VNet counts toward the zone's query meter.
~$0.40 per million queries

Optimization tips

Common ways to reduce azurerm_private_dns_a_record cost without changing the workload.

Set sensible TTLs so resolvers cache

A short TTL forces workloads to re-query the zone constantly, inflating the per-million-queries charge. A TTL that matches how often the record actually changes lets resolvers cache the answer.

Consolidate records into fewer zones

Each private DNS zone carries its own monthly hosting fee. Grouping related records into a single zone avoids paying the hosting charge for many sparsely populated zones.

Remember VNet links are free

Linking virtual networks to a private DNS zone costs nothing, so link where you need resolution without worrying about a per-link charge. Only zone hosting and queries are billed.

FAQ

Does a private DNS A record cost money?

There is no per-record charge. Cost is billed on the parent private DNS zone: a small monthly hosting fee plus a per-million-queries charge that resolutions of the record drive.

What drives Private DNS cost?

Zone hosting and query volume. Each zone has a small monthly fee, and every DNS query against it is metered per million. Short TTLs that defeat caching are the usual reason query counts climb.

Are virtual network links to a private DNS zone billed?

No. VNet links that make a private DNS zone resolvable are free. Only the zone's monthly hosting charge and its query volume appear on the bill.

Related resources

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 azurerm_private_dns_a_record.