aws-samples / aws-lambda-mirror-dns-function

AWS Lambda function to mirror DNS zone from on-premises DNS server to Route 53 private hosted zone.
Apache License 2.0
40 stars 27 forks source link

Zones with more than 100 records not handled #3

Open Jason-Crowe opened 7 years ago

Jason-Crowe commented 7 years ago

my source zone has approx 300 records in it. on the first run all the records were created in route53. on the next run however some records were attempted to be created again

Transferring zone example.com from server 1.2.3.4 Getting VPC SOA serial from Route 53 Comparing SOA serial 2017091200 with 2017091200 Updating as CREATE for A record test TTL 300 in zone example.com with [<DNS IN A rdata: 2.3.4.5>] An error occurred (InvalidChangeBatch) when calling the ChangeResourceRecordSets operation: Tried to create resource record set [name='test.example.com.', type='A'] but it already exists ERROR: Unable to update zone example.com

it appears that the software does not account for the fact that ListResourceRecords by default returns 100 records at a time. see: http://docs.aws.amazon.com/Route53/latest/APIReference/API_ListResourceRecordSets.html

since only 100 records are fetched from route53, then remaining records are assumed missing and scheduled for creation. when the create is attempted it fails because the record already exists.

nethershaw commented 5 years ago

I'm in favor. This is a one-line fix, is easy to test, and it worked on my source zone with over 3600 RRs. Please merge.