Amazon Elastic Load Balancing Construct Library
The aws-cdk-lib/aws-elasticloadbalancing package provides constructs for configuring classic load balancers.
Configuring a Load Balancer
Load balancers send traffic to one or more AutoScalingGroups. Create a load balancer, set up listeners and a health check, and supply the fleet(s) you want to load balance to in the targets property. If you want the load balancer to be accessible from the internet, set internetFacing: true.
ts
declare const vpc: ec2.IVpc;
const lb = new elb.LoadBalancer(this, 'LB', {
vpc,
internetFacing: true,
healthCheck: {
port: 80,
},
});
declare const myAutoScalingGroup: autoscaling.AutoScalingGroup;
lb.addTarget(myAutoScalingGroup);
lb.addListener({
externalPort: 80,
});
python
# vpc: ec2.IVpc
# my_auto_scaling_group: autoscaling.AutoScalingGroup
lb = elb.LoadBalancer(self, "LB",
vpc=vpc,
internet_facing=True,
health_check=elb.HealthCheck(
port=80
)
)
lb.add_target(my_auto_scaling_group)
lb.add_listener(
external_port=80
)
java
IVpc vpc;
AutoScalingGroup myAutoScalingGroup;
LoadBalancer lb = LoadBalancer.Builder.create(this, "LB")
.vpc(vpc)
.internetFacing(true)
.healthCheck(HealthCheck.builder()
.port(80)
.build())
.build();
lb.addTarget(myAutoScalingGroup);
lb.addListener(LoadBalancerListener.builder()
.externalPort(80)
.build());
csharp
IVpc vpc;
AutoScalingGroup myAutoScalingGroup;
var lb = new LoadBalancer(this, "LB", new LoadBalancerProps {
Vpc = vpc,
InternetFacing = true,
HealthCheck = new HealthCheck {
Port = 80
}
});
lb.AddTarget(myAutoScalingGroup);
lb.AddListener(new LoadBalancerListener {
ExternalPort = 80
});
go
var vpc IVpc
var myAutoScalingGroup AutoScalingGroup
lb := elb.NewLoadBalancer(this, jsii.String("LB"), &LoadBalancerProps{
Vpc: Vpc,
InternetFacing: jsii.Boolean(true),
HealthCheck: &HealthCheck{
Port: jsii.Number(80),
},
})
lb.AddTarget(myAutoScalingGroup)
lb.AddListener(&LoadBalancerListener{
ExternalPort: jsii.Number(80),
})
The load balancer allows all connections by default. If you want to change that, pass the allowConnectionsFrom property while setting up the listener:
ts
declare const mySecurityGroup: ec2.SecurityGroup;
declare const lb: elb.LoadBalancer;
lb.addListener({
externalPort: 80,
allowConnectionsFrom: [mySecurityGroup],
});
python
# my_security_group: ec2.SecurityGroup
# lb: elb.LoadBalancer
lb.add_listener(
external_port=80,
allow_connections_from=[my_security_group]
)
java
SecurityGroup mySecurityGroup;
LoadBalancer lb;
lb.addListener(LoadBalancerListener.builder()
.externalPort(80)
.allowConnectionsFrom(List.of(mySecurityGroup))
.build());
csharp
SecurityGroup mySecurityGroup;
LoadBalancer lb;
lb.AddListener(new LoadBalancerListener {
ExternalPort = 80,
AllowConnectionsFrom = new [] { mySecurityGroup }
});
go
var mySecurityGroup SecurityGroup
var lb LoadBalancer
lb.AddListener(&LoadBalancerListener{
ExternalPort: jsii.Number(80),
AllowConnectionsFrom: []IConnectable{
mySecurityGroup,
},
})
Adding Ec2 Instance as a target for the load balancer
You can add an EC2 instance to the load balancer by calling using new InstanceTarget as the argument to addTarget():
ts
declare const vpc: ec2.IVpc;
const lb = new elb.LoadBalancer(this, 'LB', {
vpc,
internetFacing: true,
});
// instance to add as the target for load balancer.
const instance = new ec2.Instance(this, 'targetInstance', {
vpc: vpc,
instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),
machineImage: new ec2.AmazonLinuxImage({ generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2 }),
});
lb.addTarget(new elb.InstanceTarget(instance));
python
# vpc: ec2.IVpc
lb = elb.LoadBalancer(self, "LB",
vpc=vpc,
internet_facing=True
)
# instance to add as the target for load balancer.
instance = ec2.Instance(self, "targetInstance",
vpc=vpc,
instance_type=ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.MICRO),
machine_image=ec2.AmazonLinuxImage(generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX_2)
)
lb.add_target(elb.InstanceTarget(instance))
java
IVpc vpc;
LoadBalancer lb = LoadBalancer.Builder.create(this, "LB")
.vpc(vpc)
.internetFacing(true)
.build();
// instance to add as the target for load balancer.
Instance instance = Instance.Builder.create(this, "targetInstance")
.vpc(vpc)
.instanceType(InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.MICRO))
.machineImage(AmazonLinuxImage.Builder.create().generation(AmazonLinuxGeneration.AMAZON_LINUX_2).build())
.build();
lb.addTarget(new InstanceTarget(instance));
csharp
IVpc vpc;
var lb = new LoadBalancer(this, "LB", new LoadBalancerProps {
Vpc = vpc,
InternetFacing = true
});
// instance to add as the target for load balancer.
var instance = new Instance(this, "targetInstance", new InstanceProps {
Vpc = vpc,
InstanceType = InstanceType.Of(InstanceClass.BURSTABLE2, InstanceSize.MICRO),
MachineImage = new AmazonLinuxImage(new AmazonLinuxImageProps { Generation = AmazonLinuxGeneration.AMAZON_LINUX_2 })
});
lb.AddTarget(new InstanceTarget(instance));
go
var vpc IVpc
lb := elb.NewLoadBalancer(this, jsii.String("LB"), &LoadBalancerProps{
Vpc: Vpc,
InternetFacing: jsii.Boolean(true),
})
// instance to add as the target for load balancer.
instance := ec2.NewInstance(this, jsii.String("targetInstance"), &InstanceProps{
Vpc: vpc,
InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_MICRO),
MachineImage: ec2.NewAmazonLinuxImage(&AmazonLinuxImageProps{
Generation: ec2.AmazonLinuxGeneration_AMAZON_LINUX_2,
}),
})
lb.AddTarget(elb.NewInstanceTarget(instance))
Types
| Name | Kind | Summary |
|---|---|---|
LoadBalancer | Construct (L2) | A load balancer with a single listener. |
CfnLoadBalancer | Construct (L1) | Specifies a Classic Load Balancer. |
CfnLoadBalancer.AccessLoggingPolicyProperty | Struct | Specifies where and how access logs are stored for your Classic Load Balancer. |
CfnLoadBalancer.AppCookieStickinessPolicyProperty | Struct | Specifies a policy for application-controlled session stickiness for your Classic Load Balancer. |
CfnLoadBalancer.ConnectionDrainingPolicyProperty | Struct | Specifies the connection draining settings for your Classic Load Balancer. |
CfnLoadBalancer.ConnectionSettingsProperty | Struct | Specifies the idle timeout value for your Classic Load Balancer. |
CfnLoadBalancer.HealthCheckProperty | Struct | Specifies health check settings for your Classic Load Balancer. |
CfnLoadBalancer.LBCookieStickinessPolicyProperty | Struct | Specifies a policy for duration-based session stickiness for your Classic Load Balancer. |
CfnLoadBalancer.ListenersProperty | Struct | Specifies a listener for your Classic Load Balancer. |
CfnLoadBalancer.PoliciesProperty | Struct | Specifies policies for your Classic Load Balancer. |
CfnLoadBalancer.SourceSecurityGroupProperty | Struct | |
CfnLoadBalancerProps | Struct | Properties for defining a CfnLoadBalancer. |
HealthCheck | Struct | Describe the health check to a load balancer. |
ILoadBalancer | Interface | Represents a load balancer. |
ILoadBalancerTarget | Interface | Interface that is going to be implemented by constructs that you can load balance to. |
InstanceTarget | Class | An EC2 instance that is the target for load balancing. |
ListenerPort | Class | Reference to a listener's port just created. |
LoadBalancerListener | Struct | Add a backend to the load balancer. |
LoadBalancerProps | Struct | Construction properties for a LoadBalancer. |
LoadBalancingProtocol | Enum |