Listener Rules and Routing in AWS Application Load Balancer
📖 Scenario: You are setting up an AWS Application Load Balancer (ALB) to route incoming web traffic to different target groups based on URL paths. This helps your website serve different content or services efficiently.
🎯 Goal: Build an AWS ALB listener configuration with rules that route requests to specific target groups based on URL path patterns.
📋 What You'll Learn
Create a listener on port 80 for the ALB
Define two target groups: tg-api and tg-web
Add listener rules to route requests with path /api/* to tg-api
Add listener rules to route requests with path /web/* to tg-web
Add a default action to forward requests to tg-web
💡 Why This Matters
🌍 Real World
Routing web traffic to different backend services based on URL paths is common in microservices and multi-tenant web applications.
💼 Career
Understanding ALB listener rules and routing is essential for cloud engineers and DevOps professionals managing scalable web infrastructure.
Progress0 / 4 steps
1
Create Target Groups
Create two target groups named tg-api and tg-web with protocol HTTP and port 80.
AWS
Hint
Use aws_lb_target_group resource with name, port, protocol, and vpc_id.
2
Create ALB Listener on Port 80
Create an ALB listener resource named alb_listener that listens on port 80 for protocol HTTP and uses the ALB ARN aws_lb.main.arn.
AWS
Hint
Use aws_lb_listener resource with load_balancer_arn, port, protocol, and default_action.
3
Add Listener Rule for /api/* Path
Add a listener rule resource named api_rule that matches requests with path pattern /api/* and forwards them to the target group tg-api. Use aws_lb_listener.alb_listener.arn as the listener ARN and set the rule priority to 10.
AWS
Hint
Use aws_lb_listener_rule with listener_arn, priority, action, and condition for path pattern.
4
Add Listener Rule for /web/* Path
Add a listener rule resource named web_rule that matches requests with path pattern /web/* and forwards them to the target group tg-web. Use aws_lb_listener.alb_listener.arn as the listener ARN and set the rule priority to 20.
AWS
Hint
Use aws_lb_listener_rule with listener_arn, priority, action, and condition for path pattern.
Practice
(1/5)
1. What does a listener rule in AWS Elastic Load Balancer do?
easy
A. It monitors CPU usage of servers.
B. It creates new virtual machines automatically.
C. It stores data permanently for applications.
D. It directs incoming traffic to specific targets based on conditions.
Solution
Step 1: Understand listener role
A listener waits for incoming traffic on a load balancer and applies rules to route it.
Step 2: Identify what rules do
Listener rules check conditions like URL path or host header to send traffic to the right target group.
Final Answer:
It directs incoming traffic to specific targets based on conditions. -> Option D
Quick Check:
Listener rules route traffic [OK]
Hint: Listener rules route traffic based on conditions [OK]
Common Mistakes:
Confusing listener rules with server creation
Thinking listener rules store data
Mixing monitoring with routing
2. Which of the following is the correct way to specify a path pattern condition in an AWS listener rule?
easy
A. Method: 'POST'
B. PathPattern: '/images/*'
C. SourceIP: '192.168.1.1'
D. HostHeader: 'example.com'
Solution
Step 1: Identify path pattern syntax
Path patterns use wildcards like '*' to match URL paths, e.g., '/images/*'.
Step 2: Match option to path pattern
PathPattern: '/images/*' correctly shows a path pattern condition; others show different conditions.
Final Answer:
<code>PathPattern: '/images/*'</code> -> Option B
Quick Check:
Path pattern uses wildcard * [OK]
Hint: Path patterns use '*' wildcard for matching paths [OK]
Common Mistakes:
Confusing host header with path pattern
Using IP or method instead of path pattern
Missing quotes or wrong syntax
3. Given these listener rules with priorities: 1: HostHeader = 'app.example.com' -> TargetGroupA 2: PathPattern = '/api/*' -> TargetGroupB What happens when a request comes to app.example.com/api/data?
medium
A. Traffic goes to TargetGroupB because path pattern matches better.
B. Traffic is rejected because two rules match.
C. Traffic goes to TargetGroupA because host header rule has higher priority.
D. Traffic goes to a default target group.
Solution
Step 1: Check rule priorities
Rules are checked in order of priority number; lower number means higher priority.
Step 2: Evaluate matching rules
Request matches both host header and path pattern, but host header rule has priority 1.
Final Answer:
Traffic goes to TargetGroupA because host header rule has higher priority. -> Option C
Quick Check:
Lower priority number wins routing [OK]
Hint: Lower priority number rules apply first [OK]
Common Mistakes:
Assuming path pattern overrides host header
Thinking multiple matches cause rejection
Ignoring rule priority order
4. You created a listener rule with priority 5 for path pattern /app/*, but traffic to /app/home is not routed correctly. What is a likely cause?
medium
A. Another rule with priority 1 matches the request first.
B. Path pattern syntax /app/* is invalid.
C. Listener rules do not support path patterns.
D. Target group is not attached to the load balancer.
Solution
Step 1: Check rule priority impact
Rules with lower priority numbers are evaluated first and can override later rules.
Step 2: Consider other matching rules
If a rule with priority 1 matches the request, the priority 5 rule won't be used.
Final Answer:
Another rule with priority 1 matches the request first. -> Option A
Quick Check:
Lower priority number rules block later ones [OK]
Hint: Check for higher priority rules blocking traffic [OK]
Common Mistakes:
Thinking path pattern syntax is wrong
Believing listener rules ignore path patterns
Assuming target group attachment causes routing failure
5. You want to route traffic to different target groups based on both host header and path pattern. Which setup correctly achieves this in AWS listener rules?
hard
A. Create a rule with priority 1: HostHeader = 'shop.example.com' AND PathPattern = '/products/*' -> TargetGroupShop
B. Create two separate rules with same priority: one for HostHeader, one for PathPattern
C. Use only one rule with PathPattern to cover all hosts
D. Set listener to forward all traffic to a single target group and filter inside the app
Solution
Step 1: Understand combined conditions
Listener rules can combine multiple conditions like host header AND path pattern in one rule.
Step 2: Evaluate options
Create a rule with priority 1: HostHeader = 'shop.example.com' AND PathPattern = '/products/*' -> TargetGroupShop correctly uses combined conditions with a single priority rule; others either conflict or do not filter properly.
Final Answer:
Create a rule with priority 1: HostHeader = 'shop.example.com' AND PathPattern = '/products/*' -> TargetGroupShop -> Option A
Quick Check:
Combine conditions in one rule for precise routing [OK]
Hint: Combine host and path in one rule for exact routing [OK]
Common Mistakes:
Using same priority for multiple rules causing conflicts
Relying on app filtering instead of load balancer routing
Using only path pattern ignoring host header
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.