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