AWS CDK Elastic Load Balancing (V1)

1.204.0 · maintenance · verified Fri Apr 17

This library provides AWS CDK V1 constructs for provisioning and managing AWS Classic Load Balancers (ELBv1). As part of the AWS CDK v1 ecosystem, it is currently in maintenance mode. The latest version is 1.204.0, with releases typically tied to the overall CDK v1 release cycle.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart deploys a basic AWS Classic Load Balancer (ELBv1) within a new VPC using CDK v1. It creates an internet-facing load balancer with an HTTP listener on port 80, routing traffic to instances (not shown) on port 80. Ensure `CDK_DEFAULT_ACCOUNT` and `CDK_DEFAULT_REGION` environment variables are set.

import os
from aws_cdk import (
    App, Stack, Environment,
    aws_ec2 as ec2,
    aws_elasticloadbalancing as elb,
    CfnOutput
)
from constructs import Construct

class ElbV1Stack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        # Create a VPC
        vpc = ec2.Vpc(self, "MyVpc",
            max_azs=2,
            cidr="10.10.0.0/16",
            subnet_configuration=[
                ec2.SubnetConfiguration(
                    name="Public",
                    subnet_type=ec2.SubnetType.PUBLIC,
                    cidr_mask=24
                ),
                ec2.SubnetConfiguration(
                    name="Private",
                    subnet_type=ec2.SubnetType.PRIVATE_ISOLATED,
                    cidr_mask=24
                )
            ]
        )

        # Select public subnets for the Classic Load Balancer
        public_subnets = vpc.select_subnets(subnet_type=ec2.SubnetType.PUBLIC)

        # Create a Classic Load Balancer
        clb = elb.CfnLoadBalancer(self, "MyClassicLoadBalancer",
            listeners=[
                elb.CfnLoadBalancer.ListenersProperty(
                    instance_port="80",
                    instance_protocol="HTTP",
                    load_balancer_port="80",
                    protocol="HTTP"
                )
            ],
            scheme="internet-facing",
            subnets=[s.subnet_id for s in public_subnets.subnets]
            # For production, consider adding security_groups and health_check.
            # The CLB will create a default security group if none is provided.
        )

        CfnOutput(self, "LoadBalancerDNS", value=clb.get_att("DNSName").to_string())

app = App()
ElbV1Stack(app, "ElbV1ExampleStack",
    env=Environment(
        account=os.environ.get("CDK_DEFAULT_ACCOUNT"),
        region=os.environ.get("CDK_DEFAULT_REGION")
    )
)
app.synth()

view raw JSON →