bash
# List hosted zones
aws route53 list-hosted-zones
aws route53 list-hosted-zones-by-name --dns-name example.com
# Create hosted zone
aws route53 create-hosted-zone \
--name example.com --caller-reference $(date +%s)
# List records in zone
aws route53 list-resource-record-sets --hosted-zone-id Z123
# Create/update record (change batch)
aws route53 change-resource-record-sets --hosted-zone-id Z123 \
--change-batch '{
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{"Value": "1.2.3.4"}]
}
}]
}'
# Alias record (points to AWS resource — no TTL, no charge for queries)
aws route53 change-resource-record-sets --hosted-zone-id Z123 \
--change-batch '{
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "my-alb-123.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}]
}'
# Health check
aws route53 create-health-check \
--caller-reference $(date +%s) \
--health-check-config Type=HTTPS,FullyQualifiedDomainName=www.example.com,Port=443,ResourcePath=/health
aws route53 list-health-checks
aws route53 get-health-check-status --health-check-id xxx