Listener ​
The Listener resource allows you to manage AWS Application Load Balancer Listeners and their associated settings.
Minimal Example ​
Create a basic listener for an Application Load Balancer with the required properties and some common optional settings.
ts
import AWS from "alchemy/aws/control";
const applicationLoadBalancerListener = await AWS.ElasticLoadBalancingV2.Listener("myListener", {
LoadBalancerArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-loadbalancer/50dc6c495c0c9188",
DefaultActions: [
{
Type: "forward",
TargetGroupArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-target-group/73e2d6bc24d9a0c6"
}
],
Port: 443,
Protocol: "HTTPS",
SslPolicy: "ELBSecurityPolicy-2016-08",
Certificates: [
{
CertificateArn: "arn:aws:acm:us-west-2:123456789012:certificate/12345678-abcd-1234-abcd-12345678abcd"
}
]
});
Advanced Configuration ​
Configure a listener with advanced settings such as mutual authentication and ALPN policy.
ts
const advancedListener = await AWS.ElasticLoadBalancingV2.Listener("advancedListener", {
LoadBalancerArn: "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-advanced-loadbalancer/50dc6c495c0c9188",
DefaultActions: [
{
Type: "redirect",
RedirectConfig: {
Host: "#{host}",
Path: "/newpath",
Port: "443",
Protocol: "HTTPS",
Query: "#{query}",
StatusCode: "HTTP_301"
}
}
],
Port: 443,
Protocol: "HTTPS",
SslPolicy: "ELBSecurityPolicy-TLS-1-2-2017-01",
AlpnPolicy: ["HTTP/2"],
MutualAuthentication: {
Truststore: {
CertificateArn: "arn:aws:acm:us-east-1:123456789012:certificate/abcd1234-abcd-1234-abcd-12345678abcd"
},
ClientAuthEnabled: true
}
});
Listener with Multiple Actions ​
Create a listener that handles multiple actions based on path patterns.
ts
const multiActionListener = await AWS.ElasticLoadBalancingV2.Listener("multiActionListener", {
LoadBalancerArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-multi-action-loadbalancer/50dc6c495c0c9188",
DefaultActions: [
{
Type: "forward",
TargetGroupArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-app/73e2d6bc24d9a0c6"
},
{
Type: "forward",
TargetGroupArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-admin/73e2d6bc24d9a0c6",
Conditions: [
{
Field: "path-pattern",
Values: ["/admin/*"]
}
]
}
],
Port: 80,
Protocol: "HTTP"
});