I’m in the middle of working on the same thing. It can actually get quite complex depending on what all you’re trying to do.
I started out with a plan to do DNS round-robin to a ‘Gateway Layer’ of servers, which would then determine the GeoIP origin of the request and 301 Redirect the request to an appropriate load balancer, which would then route the request to any of the app servers (with sticky sessions).
You can see more detail in this Stack Overflow question:
I’ve since pretty much abandoned that approach when I discovered that AWS Route53 offers a few options for DNS routing that will send the request to a close IP based on whichever 'routing policy’ you choose. You can see more info here: http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html
Now I’m trying to figure out how to use Route53 or CloudFront for SSL termination which would essentially turn Route53 into my load-balancing layer.