Search code examples
amazon-web-servicesflaskamazon-ec2aws-lambdaamazon-elastic-beanstalk

Use Route53 / AWS Geolocation to hit different endpoints


I have an API running on Elastic Beanstalk. The API has endpoints that will do different things depending on the location of the user requesting it.

I see that Route53 has a geolocation feature, and my understanding is that it can route to different EC2 instances based on location.

My case is that I have one EC2 instance running my API, and I want to route to different endpoints (or even could pass the location as an argument) according to the location.

Can I use Route53 to do that? If not, is there another way to do that for an API running in Elastic Beanstalk like I have?

For what its worth, the API is a Flask Python API..


Solution

  • That Route53 feature really isn't intended to be used like you are describing. It won't route a request to a different path on a server based on the location, it simply routes all requests to a completely different server (usually in a completely different country) based on location.

    What I would do is place CloudFront in front of your API, and use one of the CloudFront location headers, like CloudFront-Viewer-Country, CloudFront-Viewer-Country-Region or even the Latitude/Longitude request headers that CloudFront adds to the requests it proxies to your API.

    From there you could have a single API endpoint that checks that header and then calls different code execution paths in your backend code based on the location.