ListenerRule
The ListenerRule resource allows you to manage AWS Application Load Balancer ListenerRules that define how requests are routed to targets based on specified conditions.
Minimal Example
Section titled “Minimal Example”Create a basic ListenerRule with required properties such as ListenerArn, Actions, Priority, and Conditions.
import AWS from "alchemy/aws/control";
const basicListenerRule = await AWS.ElasticLoadBalancingV2.ListenerRule("basicListenerRule", { ListenerArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188", Actions: [{ Type: "forward", TargetGroupArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-target-group/73e2d6bc24d8a067" }], Priority: 10, Conditions: [{ Field: "path-pattern", Values: ["/images/*"] }]});
Advanced Configuration
Section titled “Advanced Configuration”Configure a ListenerRule with additional settings like multiple actions and complex conditions.
const advancedListenerRule = await AWS.ElasticLoadBalancingV2.ListenerRule("advancedListenerRule", { ListenerArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188", Actions: [ { Type: "forward", TargetGroupArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-target-group/73e2d6bc24d8a067" }, { Type: "fixed-response", FixedResponseConfig: { ContentType: "text/plain", MessageBody: "Service Unavailable", StatusCode: "503" } } ], Priority: 20, Conditions: [ { Field: "host-header", Values: ["example.com"] }, { Field: "path-pattern", Values: ["/api/*"] } ]});
Redirect to HTTPS
Section titled “Redirect to HTTPS”Create a ListenerRule that redirects HTTP traffic to HTTPS.
const redirectListenerRule = await AWS.ElasticLoadBalancingV2.ListenerRule("redirectListenerRule", { ListenerArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188", Actions: [{ Type: "redirect", RedirectConfig: { Host: "#{host}", Path: "/#{path}", Port: "443", Protocol: "HTTPS", Query: "#{query}", StatusCode: "HTTP_301" } }], Priority: 30, Conditions: [{ Field: "path-pattern", Values: ["/*"] }]});