Skip to content
GitHubXDiscordRSS

ListenerRule

Learn how to create, update, and manage AWS Application Load Balancer ListenerRules using Alchemy Cloud Control.

The ListenerRule resource allows you to manage AWS Application Load Balancer ListenerRules that define how requests are routed to targets based on specified conditions.

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/*"]
}]
});

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/*"]
}
]
});

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: ["/*"]
}]
});