I am newbie to Amazon Services and their API.
Using Amazon route53Clinet class, I know there is a method getHostedZone which get the Hosted Zone information on the basis of ID. But I have a case where I have the domain name and i need to fetch the hosted zone id may be on the basis of the provided domain name? How can i do that?
I use the AWS CLI and pipe the JSON results to the jq
tool:
aws route53 list-hosted-zones-by-name |
jq --arg name "example.com." \
-r '.HostedZones | .[] | select(.Name=="\($name)") | .Id'
The jq
expression selects each hosted zone JSON item that contains the name "example.com". Heads up that this may return more than one record.
The output is the matching hosted zone id strings such as:
/hostedzone/ABCDEF12345678
You can then list resource record sets for a hosted zone id:
aws route53 list-resource-record-sets \
--hosted-zone-id "/hostedzone/ABCDEF12345678"
You can use listHostedZones
or listHostedZonesByName
to interrogate the service about your hosted zones.
However... You really need to already know the hosted zone ID -- store or cache it -- because it's possible to create more than one hosted zone in Route 53 for exactly the same domain... and if your code blindly searched for the hosted zone by domain name, you could end up modifying the wrong one... particularly if you fall into the antipattern trap of assuming only one match is possible, and therefore you always select the first match.
Simple deployments will only have one hosted zone for each domain name, but reasons you might have more than one would include private hosted zones (accessible only from inside your VPC) or duplicate public hosted zones, where you are doing a DNS rebuild or hard cutover. Route 53 allows you to create a second (or third, etc.) hosted zone with 4 different name servers.
Also, of course, it makes sense to have this information locally to avoid making unnecessary API requests, which can cost time and money. The hosted zone id is, as you likely noticed, also visible in the console.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With