Wildcard records not handled

Open
#2 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
aws, python
Domain
backend, cloud

Research direction

Start by tracing the Python code that compares source-zone records with Route 53 records and builds delete changes, then reproduce the second-run behavior with a wildcard record such as *.test.example.com. The fix is done when Route 53's escaped wildcard name is compared and deleted as the same record rather than as 4.test.example.com.

Written by the indexing model from the issue text.

Description

my source zone contains wildcard records of the form '*.test.example.com'
when first run, i see the record added correctly in route53 as '*.test.example.com'
however when rerun, i see:

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 DELETE for A record 4.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 delete resource record set [name='4.test.example.com.', type='A'] but it was not found
ERROR: Unable to update zone example.com

this appears to be a known issue with libraries that interact with route53.
see: https://github.com/boto/boto/issues/818

the underlying cause is that route53 escapes non-alphanumeric characters
see: http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html

so route53 is returning '\052.test.example.com' which gets misinterpreted somewhere in the python code and converted to '4.test.example.com'. since that record does not exist in the source zone, it is scheduled for deletion from route53. when the delete is attempted, it fails because there is no record for '4.test.example.com'.

it seems the python error is related to the difference between 052 (octal) => '*' and 52 (decimal) => '4'
see: http://www.asciitable.com/

Dominant language
Python
Stars
41
Forks
29
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

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

All issues in aws-samples/aws-lambda-mirror-dns-function

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.