Sorting All Route 53 Domain Names and Comparing with EC2 Instances

Question:

My task is to clear out our Route 53 from all the old Domain names. We have 700 records but only 200 running instances.

I have tried AWS CLI to get the EC2 instances IP address which worked fine.
I can’t seem to make a correct query on Route 53 CLI to get just the Domain Names plus the A records.

Ideally, I’d get both in a CSV format then use python to compare them.

Here is one of the Route 53 queries I tried:

aws route53 list-resource-record-sets --hosted-zone-id XXXX --output text --query 'ResourceRecordSets[*].[Name,ResourceRecords[*]]' | sed -E 's/s+/,/g' > domains.csv
Asked By: QuestioningQuest

||

Answers:

As suggested by Mark B, use python and boto3.

This is by no means perfect and you should probably add some more filtering by type etc but it’s a start. I hope it helps you in the right direction.

import boto3
import json

r53 = boto3.client('route53')

result=r53.list_resource_record_sets(HostedZoneId="REPLACE_WITH_HOSTED_ZONE_ID")

for r in result["ResourceRecordSets"]:
  output = r["Name"]
  try:
    for o in r["ResourceRecords"]:
      output += ","+o["Value"]
  except KeyError:
    pass
  print(output)
Answered By: lennart

I ended up using Vlookup with the two CSVs tables. I compared each IP Address in Sheet 1 with the IP address in Sheet 2.
That worked for this use case as it was a one time operation.

Answered By: QuestioningQuest