Search code examples
amazon-web-servicesamazon-elastic-beanstalkaws-api-gatewayamazon-cloudfrontamazon-route53

AWS : Manage Elastic Beanstalk API and CloudFront routes with Routes 53


I wonder how to manage the routes of my architecture. To summarize, my architecture is composed of :

  • S3 static website exposed under CloudFront CDN
  • Elastic Beanstalk API (based on Docker container with Django Rest and Python)

I usually insert a new record to my hosted zone in my route 53 but my goal here is to have the equivalent of Nginx locations with proxy_pass. For example, I would have :

  • <my_dns_record>/api that target my Beanstalk API
  • <my_dns_record> that target my static website on my CloudFront

I thought about an API Gateway but I wonder if it's really the best way to structure the routing.

Does anyone have an idea how to achieve the desired behavior ? Thank you in advance for your help.


Solution

  • If I understand correctly, you want to have multiple apps (your S3 static site, and your Elastic Beanstalk app) served under a single domain. Route53 doesn't have any special features to handle this, since it is just a DNS service, and what you are talking about is an HTTP path routing thing.

    You also shouldn't use API Gateway for this, as you would be placing your entire website behind an API Gateway when it is really only appropriate to have your API behind an API Gateway.

    I would just add the Elastic Beanstalk API under CloudFront as well, as a second origin, and configure CloudFront to send requests at the /api path to the Elastic Beanstalk origin.


    Alternatively, forget about having everything under the same domain, and use a subdomain api.yourdomain.com for your API. Using subdomains for your different services instead of path routing is a lot more flexible.