Route53 dynamic dns updater service

After posting to AWS forum realised that the guy originally asking for windows application asked for more like a service. Voila! It is pretty easy with .NET. So now in addition to GUI in same package at GitHUB is bundled a service. With no installer though. A bit bloated with many megs for simple service, mostly log4net and AWS SDK. Might remove xmls, but can’t do much about huge monolith of AWS SDK except writing own lightweight REST client.

Anyway, if you don’t feel like you are in the mood of compiling anything with Visual Studio download the service and the GUI from Github downloads page here.

The AWS configuration file shall be created manually

{
	"awsAccessKey":"";,
	"awsSecretKey":"",
	"hostedZoneId": "",
}

or you can pretty much use the one generated by GUI and copy it over service one. Don’t think like there is much need for random sleep at start, so removed in service by default.
The service shall be installed and run. By default it will install in automatic mode, so it will autostart with windows. To install it locate your .net framework 4 folder and find installutil.exe then run as administrator

c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /LogToConsole=true Route53DDNSService.exe

to uninstall run

c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u /LogToConsole=true Route53DDNSService.exe

Enjoy!

This entry was posted in Uncategorized. Bookmark the permalink.
  • Tall

    Exactly what I was looking for.
    Thank you!

    Tal

    • dreamins

      You’re welcome. Please note that it assumes only one A record per HZ, I might add a check and option to accept a domain name to update as well. May be even today.

  • Tall

    Hi,
    just tried , and see an error message:
    C:Route53DDNSRoute53DDNSService>WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe /LogToConsole=true Route53DDNSService.exeMicrosoft (R) .NET Framework Installation utility Version 4.0.30319.1Copyright (c) Microsoft Corporation.  All rights reserved.Exception occurred while initializing the installation:System.BadImageFormatException: Could not load file or assembly ‘file:///C:Route53DDNSRoute53DDNSServiceRoute53DDNSService.exe’ or one of its dependencies. An attempt was made to load a program with an incorrect format..

    • dreamins

      Hi Tall,

      Hm. Can you launch the GUI one?

    • dreamins

      Argh. I think I know. Are you runnign 64 or 32 bit Windows?

      • Tall

        it is 64 bit

        • dreamins

          Hm. Strange. I am runnign 64 bit as well, I tried on 3 different machines with windows 7. Do you have XP/Vista or anything?

          I’ll check my build settings as well. You can try to download the source and compile it with Visual Studio C# Express, it is free.

          • Tall

            I’m using win2008 x64 distro on AWS.

          • dreamins

            Will you redownload and try again? I’ve changed the project settings, it is now x86 should run on anything (in theory) if it doesn’t work I’ll try anyCPU. Both works on my machine.  I’ve also added domainName in config, I guess in your case will be 3 or 4 level domain names.

          • chester

            hi dreaming. i was having kind of the same problem:

            Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1Copyright (c) Microsoft Corporation.  All rights reserved.Exception occurred while initializing the installation:System.IO.FileLoadException: Could not load file or assembly file:///C:UsersAdministratorDownloadsRoute53DDNSRoute53DDNSRoute53DDNSServiceRoute53DDNSService.exe’ or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).

            Right-click on the service file -> properties -> general -> unblock button (on the bottom) solved my service installation problem.

            in w2k8 r2 x64 on aws

          • dreamins

            Thanks for tip! I never tried to launch it on EC2 instance, but it works on pretty much any system I have. Although all of them are workstations and not servers.

          • generalenthu

            Was about to give up when I found this.. Thanks to both of you!!

          • dreamins

            BTW if you are running EC2 there are a plenty of better options. Your instance name shall stay the same, so better to query it than external reflector. Also you  can use elastic ip which will keep your IP address from changing. 

        • dreamins

          Ok. it appears project settings for Service are incorrect I will fix and rebuild. Will update later today.

          Thanks for finding the issue!

  • Tall

    Hi,
    some clarification needed for Route53DDNS. as it seems the program update first “A” record in founds in the zone…
    is there any way to specify what A record should be updated?

    thank you ahead,
    Tal

    • dreamins

      well not at this point, but I might add it tonight. Will specifying the domain name be sufficient for your use case? E.g. I’lls earch for A record for exactly matching domain name for ex. “stepanyakovlev.net.” in my case.

      • Tall

        yes, this would be sufficient, since the domain name should be know ( assosiated with hosted Zone ID), all i need to insert is my host name. for example www or mail or anything else. if I have a value than the IP fo the domain “stepanyakovlev.net.”  should be changed.
         
        Thank you very much for your help!

        • dreamins

          Ok. Watch for updates then 🙂

          • Tall

            14 May 2012 21:18:30,720 [INFO] Route53DDNSLib.accessor.GetExternalIPAccessor: Parsed regex 50.16.91.33
            14 May 2012 21:18:30,720 [INFO] Route53DDNSLib.Runner: Got IP [50.16.91.33]
            14 May 2012 21:18:30,720 [INFO] Route53DDNSLib.Runner: Retrieving IP from Route53
            14 May 2012 21:18:30,720 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Creating Route53 client
            14 May 2012 21:18:30,720 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Calling ListResourceRecordSets
            14 May 2012 21:18:30,720 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Request body’s content size 0
            14 May 2012 21:18:30,720 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Starting request ListResourceRecordSetsRequest at https://route53.amazonaws.com
            14 May 2012 21:18:30,767 [INFO] Amazon.Runtime.AmazonWebServiceClient: Received response for ListResourceRecordSetsRequest with status code OK in -3599953.2 ms.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name rsa.auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name s3.auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name www1.auth-demo.com.
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!
            14 May 2012 21:18:30,767 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Seems to be the one we need
            14 May 2012 21:18:30,767 [INFO] Route53DDNSLib.Runner: Route53 is pointing to 1.1.1.1
            14 May 2012 21:18:30,767 [INFO] Route53DDNSLib.Runner: Updating record at Route53
            14 May 2012 21:18:30,767 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Calling ListResourceRecordSets
            14 May 2012 21:18:30,767 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Request body’s content size 0
            14 May 2012 21:18:30,767 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Starting request ListResourceRecordSetsRequest at https://route53.amazonaws.com
            14 May 2012 21:18:30,798 [INFO] Amazon.Runtime.AmazonWebServiceClient: Received response for ListResourceRecordSetsRequest with status code OK in -3599968.8 ms.
            14 May 2012 21:18:30,798 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Calling ChangeResourceRecordSets
            14 May 2012 21:18:30,798 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Request body’s content size 627
            14 May 2012 21:18:30,798 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Starting request ChangeResourceRecordSetsRequest at https://route53.amazonaws.com
            14 May 2012 21:18:30,861 [INFO] Amazon.Runtime.AmazonWebServiceClient: Received response for ChangeResourceRecordSetsRequest with status code OK in -3599937.6 ms.

          • dreamins

            Looks good to me. Is there any problem?

          • dreamins

            A record pointing to www1.auth-demo.com still points to 1.1.1.1 after call? 

          • Tall

            does not seem to work.
            I try the Route53DDNS app, and even the logs show correct responce, it try to update the first A record it can see, but not the one specified in config.

  • chester

    Hi. i’m trying your DDNS client here, but it’s not working. Can u give me some light? here is the log:

    18 Jul 2012 15:26:49,320 [INFO] Route53DDNSLib.Runner: Woke up!18 Jul 2012 15:26:49,320 [INFO] Route53DDNSLib.accessor.IPAccessor: Retrieving IP18 Jul 2012 15:26:49,320 [INFO] Route53DDNSLib.accessor.GetExternalIPAccessor: Requesting ip from http://strewth.org/ip.php18 Jul 2012 15:26:49,847 [INFO] Route53DDNSLib.accessor.GetExternalIPAccessor: got result {“ipaddress”:”177.71.136.78″,”fqdn”:”ec2-177-71-136-78.sa-east-1.compute.amazonaws.com”}18 Jul 2012 15:26:49,848 [INFO] Route53DDNSLib.accessor.GetExternalIPAccessor: Parsed regex 177.71.136.7818 Jul 2012 15:26:49,848 [INFO] Route53DDNSLib.Runner: Got IP [177.71.136.78]18 Jul 2012 15:26:49,848 [INFO] Route53DDNSLib.Runner: Retrieving IP from Route5318 Jul 2012 15:26:49,848 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Creating Route53 client18 Jul 2012 15:26:49,849 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Calling ListResourceRecordSets18 Jul 2012 15:26:49,849 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Request body’s content size 018 Jul 2012 15:26:49,849 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Starting request ListResourceRecordSetsRequest at https://route53.amazonaws.com18 Jul 2012 15:26:50,686 [INFO] Amazon.Runtime.AmazonWebServiceClient: Received response for ListResourceRecordSetsRequest with status code OK in 10800836.8826 ms.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name d-app.veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name d-click.veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name d-image.veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name d-view.veltrac.com.br.18 Jul 2012 15:26:50,688 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name danubio.veltrac.com.br.18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name download.veltrac.com.br.18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name emb.veltrac.com.br.18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name http://ftp.veltrac.com.br.18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name intranet.veltrac.com.br.18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name m.veltrac.com.br.18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,689 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name mail.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name mobile.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name nagios.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name painel.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name relatorio.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name relatorios.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name sav.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name sistema.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name smtp.veltrac.com.br.18 Jul 2012 15:26:50,690 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name vpn.veltrac.com.br.18 Jul 2012 15:26:50,691 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,691 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name web.veltrac.com.br.18 Jul 2012 15:26:50,691 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,691 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name webmail.veltrac.com.br.18 Jul 2012 15:26:50,691 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name http://www.veltrac.com.br.18 Jul 2012 15:26:50,691 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 15:26:50,691 [ERROR] Route53DDNSLib.Runner: Got an exception haven’t done anything perhaps.Route53DDNSLib.exception.ConfigurationException: Cannot get previous IP from Route53. Make sure you have one A record in your hosted zone!   at Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor.get()   at Route53DDNSLib.Runner.doIt(Object state)

    • dreamins

      It looks like it cannot find the A record with configured name to update. What name did you configure to update?

      • chester

        {“domainName”:”danubio.veltrac.com.br”,”externalIPNeeded”:true,”hasInitialDelay”:false,”ips”:[{“enabled”:true,”pattern”:”([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})”,”url”:”http://strewth.org/ip.php”},{“enabled”:true,”pattern”:”(.)*”,”url”:”http://checkip.amazonaws.com/”}],”runOnStart”:true,”timerPeriodSec”:300}

        • dreamins

          You shall add a dot after domain name e.g. replace “danubio.veltrac.com.br” with “danubio.veltrac.com.br.” (note the .) in your config . I will also modify my prog to include it if it is not provided as this is a detail largely ignored, thanks for feedback!

          • chester

            Hi dreamins, tks for the reply. Adding the dot really did the trick, and i’m not getting errors anymore. unfortunally, the dns is not updating as well =S
            the log seems to be fine:

            18 Jul 2012 17:05:11,293 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with name danubio.veltrac.com.br.18 Jul 2012 17:05:11,293 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Found rrset with type A!18 Jul 2012 17:05:11,293 [DEBUG] Route53DDNSLib.accessor.Route53AIPForHostedZoneAccessor: Seems to be the one we need18 Jul 2012 17:05:11,293 [INFO] Route53DDNSLib.Runner: Route53 is pointing to 177.71.149.20618 Jul 2012 17:05:11,293 [INFO] Route53DDNSLib.Runner: Updating record at Route53 18 Jul 2012 17:05:11,293 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Calling ListResourceRecordSets18 Jul 2012 17:05:11,293 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Request body’s content size 018 Jul 2012 17:05:11,293 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Starting request ListResourceRecordSetsRequest at https://route53.amazonaws.com18 Jul 2012 17:05:11,465 [INFO] Amazon.Runtime.AmazonWebServiceClient: Received response for ListResourceRecordSetsRequest with status code OK in 10800171.6 ms.18 Jul 2012 17:05:11,465 [INFO] Route53DDNSLib.client.DefaultRoute53Client: Calling ChangeResourceRecordSets18 Jul 2012 17:05:11,465 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Request body’s content size 62918 Jul 2012 17:05:11,465 [DEBUG] Amazon.Runtime.AmazonWebServiceClient: Starting request ChangeResourceRecordSetsRequest at https://route53.amazonaws.com18 Jul 2012 17:05:12,001 [INFO] Amazon.Runtime.AmazonWebServiceClient: Received response for ChangeResourceRecordSetsRequest with status code OK in 10800536 ms.

            These times seems to be a little high, but i’m not sure from where they come from. any ideas?

            very tks in advance.

          • dreamins

            Ignore the times. They come from AWS SDK, I am not quite sure why are they so off.

            Regarding your update, the Route53 API did not return any error, so it should have been updated. The part of log you pasted doesn’t show what were you trying to update it to.

            What might happen is that Route53 is authoritative DNS server, and when you updated it there it just means any time anyone asked Route53 for that A record it will get a new IP. But actually you are querying some local recursive DNS server, which is caching results that R53 returned for 300 seconds (that is TTL of your record) and re-requesting authoritative answer once the TTL expires.

            After updating you can check whether Route53 started to reply with new ip by issuing ” dig A +short danubio.veltrac.com.br @ns-1163.awsdns-17.org.” if you are using linux, which currently returns 177.71.149.206 for me.

          • dreamins

            Oh crap. I know what is happening, it is updating the apex and not the subdomain. I’ll fix that tonight.

          • dreamins

            E.g. it updated the veltrac.com.br instead of danubio.veltrac.com.br.

          • dreamins

            Fixed the bug.

            please redownload the package from https://github.com/dreamins/Route53DDNS/downloads

            PLEASE update your apex back to whatever it was, e.g.veltrac.com.br is now most probably pointing not to what you are thinking about. Sorry for that.

            Thanks.

          • chester

            hi dreamins. i fixed the apex and downloaded the new version. it’s working like a charm now! 

            i’ll now do some testing running as a service. 
            tks again!

          • dreamins

            Ok. Hope no much damage done and zone was for testing purposes )

      • chester

        i was thinking about this, but i double checked and the A in route53 matches the one  in the config file

    • dreamins

      Can you post the config, the one w/o the AWS details of course.

  • Ben

    Hi

    Rather than use external IP lookup providers, why not use the EC2 metadata?  You can read the internal IP from:

    http://169.254.169.254/latest/meta-data/local-ipv4

    and the public IP from:

    http://169.254.169.254/latest/meta-data/public-ipv4

    • dreamins

      I never actually thought of this as something that will be running on EC2 (although seems like whoever uses it uses for that single purpose). I personally use some version of it for my home-brew server. You can perhaps use metadata API as an “IP provider” as it seems to be REST and doesn’t require authorization.

  • rj

    I have a domain with a large number of A records (~250). Not sure, but i t seems like the where it’s failing, but the section “Looking for RRSet” seems to give up after processing approx 100 records. Is this a limit in the ListResourceRecordSetsRequest, or a limit in the code ?

    • dreamins

      The magic 100 number comes from Route53 API reply, if you have more than 100 RRSets it paginates with a 100 at a time, my guess will be that my pagination code is messed up. That is probably a bug, I’ll look at it and update once I fixed it (if it is a bug).

      • rj

        The quick response is much appreciated. Let me know if you need a tester 🙂

        • dreamins

          There is a bug indeed. Unfortunately fixing it uncovered a bug in awssdk which seems to have been fixed since then, but upgrading the awssdk requires now updating of .net framework to 4.5 and Visual Studio to 2013 version. So this is taking longer than I expected.

          • rj

            Thank you, reported issue has been resolved, it works brilliantly 🙂

            I owe you a coffee / beer !

          • dreamins

            YW. Sorry for missing unit tests that would have caught it 🙂

        • dreamins

          Ok fixed now. Please download new version from Github project release page (or build yourself with VS 2013) https://github.com/dreamins/Route53DDNS/releases