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
| Fact | Value |
|---|---|
| CLI | skippr dns <operation> |
| Target prefix | CloudDns. |
| Authentication | Cloud JWT or SigV4 service dns |
| Contract | API 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_zoneandcloud_dns_recordthrough 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
skippr dns create-zone --name example.comresource "cloud_dns_zone" "example" {
name = "example.com"
}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,
});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
skippr dns create-record --input - <<JSON
{
"zoneId": "<zoneId>",
"name": "status.example.com",
"type": "TXT",
"content": "ready",
"ttl": 300
}
JSONresource "cloud_dns_record" "status" {
zone_id = cloud_dns_zone.example.zone_id
name = "status.example.com"
type = "TXT"
content = "ready"
ttl = 300
}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,
});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
| Concept | Meaning |
|---|---|
| Zone | An authorized DNS namespace, such as example.com |
| Record | A name, type, value, and optional TTL or MX priority inside a zone |
| Delegation | Registrar nameserver settings that make the managed zone authoritative |
| DNS-01 challenge | A temporary TXT record used to prove control of a certificate hostname |
zoneId | Opaque identifier returned by CreateZone |
recordId | Opaque 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
| Task | Supported operations |
|---|---|
| Create and remove | CreateZone, DeleteZone |
| Read and discover | GetZone, 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
| Task | Supported operations |
|---|---|
| Create | CreateRecord |
| Replace or create by identity | UpsertRecord |
| Read and discover | GetRecord, ListRecords |
| Delete | DeleteRecord |
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
UpsertRecordwhen 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.
