Skip to content

DNS

Use DNS to put Skippr Cloud on a hostname you own. Create a zone, publish records, and use that zone when Certificates proves you control the name. You do not paste registrar API keys into Skippr.

Status: Preview. See the API action reference for the full command list.

At a glance

FactValue
CLIskippr dns <operation>
Target prefixCloudDns.
AuthenticationCloud JWT or SigV4 service dns
ContractAPI actions

What you can do

  • Create and delegate a zone that your Cloud account is authorized to manage.
  • Create, replace, read, list, and delete records in that zone.
  • Use managed DNS-01 records when Certificates validates a hostname.
  • Manage cloud_dns_zone and cloud_dns_record through Terraform or CDKTF.

Before you start

You need skippr login or an operator/workload SigV4 key and permission to manage DNS resources. You also need control of the domain you create. Skippr Cloud returns the nameservers for a new delegated zone; update them at your registrar before expecting public DNS resolution.

Create a zone and your first record

The same zone and record are CLI, Terraform, CDKTF TypeScript, or CDKTF Python. For provider credentials and the shared cloud provider block, see Terraform and CDKTF.

1. Create the zone

bash
skippr dns create-zone --name example.com
hcl
resource "cloud_dns_zone" "example" {
  name = "example.com"
}
ts
import { CloudProvider, CloudDnsZone } from "@skippr/provider-cloud";

const cloud = new CloudProvider(this, "cloud", { region: "eu-central-1" });

const zone = new CloudDnsZone(this, "example", {
  name: "example.com",
  provider: cloud,
});
python
from skippr_cdktf import CloudProvider, CloudDnsZone

cloud = CloudProvider(self, "cloud", region="eu-central-1")

zone = CloudDnsZone(
    self,
    "example",
    name="example.com",
    provider=cloud,
)

Save the returned zoneId. When the response includes nameservers, delegate the domain to those nameservers at your registrar.

2. Create a record

bash
skippr dns create-record --input - <<JSON
{
  "zoneId": "<zoneId>",
  "name": "status.example.com",
  "type": "TXT",
  "content": "ready",
  "ttl": 300
}
JSON
hcl
resource "cloud_dns_record" "status" {
  zone_id = cloud_dns_zone.example.zone_id
  name    = "status.example.com"
  type    = "TXT"
  content = "ready"
  ttl     = 300
}
ts
import { CloudDnsRecord } from "@skippr/provider-cloud";

new CloudDnsRecord(this, "status", {
  zoneId: zone.zoneId,
  name: "status.example.com",
  type: "TXT",
  content: "ready",
  ttl: 300,
  provider: cloud,
});
python
from skippr_cdktf import CloudDnsRecord

CloudDnsRecord(
    self,
    "status",
    zone_id=zone.zone_id,
    name="status.example.com",
    type="TXT",
    content="ready",
    ttl=300,
    provider=cloud,
)

A successful response includes recordId, the normalized record fields, and the applied TTL.

Understand DNS resources

ConceptMeaning
ZoneAn authorized DNS namespace, such as example.com
RecordA name, type, value, and optional TTL or MX priority inside a zone
DelegationRegistrar nameserver settings that make the managed zone authoritative
DNS-01 challengeA temporary TXT record used to prove control of a certificate hostname
zoneIdOpaque identifier returned by CreateZone
recordIdOpaque identifier returned by CreateRecord

The generated CreateRecord contract is authoritative for accepted record types and fields. priority applies to MX records. Cloud API and gateway Api records should not enable proxying unless another service's contract explicitly requires it.

Platform hostnames Skippr publishes for the shared API, regional services, and Sites origin are not tenant record CRUD.

Manage zones

TaskSupported operations
Create and removeCreateZone, DeleteZone
Read and discoverGetZone, ListZones

cloud_dns_zone is the Terraform resource for a zone. CDKTF TypeScript and Python expose the generated binding for the same resource lifecycle.

Manage records

TaskSupported operations
CreateCreateRecord
Replace or create by identityUpsertRecord
Read and discoverGetRecord, ListRecords
DeleteDeleteRecord

Use UpsertRecord when repeated automation should converge on one record. cloud_dns_record maps create, read, update, delete, and list to these operations.

Use DNS with certificates

When the zone is managed by Skippr Cloud, Certificates coordinates the DNS-01 TXT record and removes it after validation. You do not need to call PublishDns01 or DeleteDns01 from application code.

If the hostname uses an external DNS provider, follow the validation record returned by the certificate workflow. Never put DNS provider credentials in a Cloud DNS request.

Limits and errors

  • DNS is authoritative zone and record management; it is not a recursive resolver.
  • Record names must belong to a zone you are authorized to manage.
  • Record and zone counts use Preview service limits; no numeric public quota is currently guaranteed.
  • 400: the name, type, value, or request shape is invalid.
  • 401: authentication is missing or invalid.
  • 403: the zone or record name is outside your authorized scope.
  • 404: the requested zone or record does not exist.
  • 409: the requested create conflicts with an existing resource; use UpsertRecord when replacement is intended.
  • 500: the service could not read or persist its ownership metadata.
  • 502: the authoritative DNS provider rejected the request or was temporarily unavailable. Retry transient failures with backoff.

Provider credentials, provider account ids, and implementation identifiers are never returned.