Does AWS offer a way to route HTTPS traffic to two different EC2 instances based on directory path?

Solution 1:

Use the AWS Application Load Balancer, which does Path Based Routing. That second link is a tutorial how to do it.

In short, you set up your ALB as normal, then follow these steps (copied from the AWS tutorial):

  • On the Listeners tab, use the arrow to view the rules for the listener, and then choose Add rule. Specify the rule as follows:

  • For Target group name, choose the second target group that you created.

  • For Path pattern specify the exact pattern to be used for path-based routing (for example, /img/*). For more information, see Listener Rules.

  • Choose Save.

Solution 2:

In addition to Tim's excellent answer, you can also achieve this with CloudFront.

First, create your distribution, adding origins for EC2 Instance A and EC2 Instance B (which could also be load balancers, non-AWS hosts, or even S3 buckets).

Then, setup cache behavior rules to map /a/* and /b/* to the appropriate origins.

Whether or not it makes sense to use CloudFront for this purpose will depend on your application and need for a CDN.