Yeah, I wrote a little http endpoint that I access with curl in a cron job. The server updates my master DNS git repo and which then updates the data in Route 53.
The DNS stuff is based on a Perl module I wrote called Net::DNS::Create [1]. It allows you to use a little DSL-ish language to create your DNS entries, then compile them into whatever DNS backend you want (Bind, TinyDNS, and Route53 are supported out of the box, and all have been used in production at some point). A quick example of what this might look like is here: https://github.com/caldwell/net-dns-create/blob/master/creat...
Previously I used bind/named for a subdomain, something like d.someshortdomainofmine.tld for a dynamic namespace and updated entries below with a cronjob calling
nsupdate -k /path/to/a/key << _EOF_
server my.server.here
zone d.someshortdomainofmine.tld
update delete foo.d.someshortdomainofmine.tld
update add foo.d.someshortdomainofmine.tld 300 AAAA ipv6here
show
send
_EOF_
which worked just fine and took roughly 20min to get right, including the DNS entries. I'm currently moving to NSD and I'll implement something similar there.