Skip to content

LoadBalancer ​

The LoadBalancer resource lets you manage AWS ElasticLoadBalancing LoadBalancers and their configuration settings.

Minimal Example ​

Create a basic load balancer with required properties and common optional settings such as access logging and security groups.

ts
import AWS from "alchemy/aws/control";

const basicLoadBalancer = await AWS.ElasticLoadBalancing.LoadBalancer("basic-load-balancer", {
  LoadBalancerName: "my-load-balancer",
  Listeners: [{
    LoadBalancerPort: 80,
    InstancePort: 80,
    Protocol: "HTTP"
  }],
  AvailabilityZones: ["us-west-2a", "us-west-2b"],
  SecurityGroups: ["sg-0123456789abcdef0"],
  Subnets: ["subnet-0123456789abcdef0", "subnet-abcdef0123456789"]
});

Advanced Configuration ​

Configure a load balancer with advanced settings including connection draining, health checks, and sticky sessions.

ts
const advancedLoadBalancer = await AWS.ElasticLoadBalancing.LoadBalancer("advanced-load-balancer", {
  LoadBalancerName: "my-advanced-load-balancer",
  Listeners: [{
    LoadBalancerPort: 80,
    InstancePort: 80,
    Protocol: "HTTP"
  }],
  HealthCheck: {
    Target: "HTTP:80/",
    Interval: 30,
    Timeout: 5,
    HealthyThreshold: 2,
    UnhealthyThreshold: 2
  },
  ConnectionDrainingPolicy: {
    Enabled: true,
    Timeout: 300
  },
  AppCookieStickinessPolicy: [{
    PolicyName: "my-app-cookie-policy",
    CookieName: "app_cookie"
  }],
  AvailabilityZones: ["us-west-2a", "us-west-2b"],
  SecurityGroups: ["sg-0123456789abcdef0"],
  Subnets: ["subnet-0123456789abcdef0", "subnet-abcdef0123456789"]
});

Custom Policies ​

Define custom policies for your load balancer for more granular control.

ts
const customPolicyLoadBalancer = await AWS.ElasticLoadBalancing.LoadBalancer("custom-policy-load-balancer", {
  LoadBalancerName: "my-custom-policy-load-balancer",
  Listeners: [{
    LoadBalancerPort: 443,
    InstancePort: 80,
    Protocol: "HTTPS",
    SSLCertificateId: "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-5678-90ef-ghij-klmnopqrstuv"
  }],
  Policies: [{
    PolicyName: "my-iam-policy",
    PolicyType: "CookieStickiness",
    PolicyAttributes: [{
      Name: "CookieName",
      Value: "my_cookie"
    }]
  }],
  AvailabilityZones: ["us-west-2a", "us-west-2b"],
  SecurityGroups: ["sg-0123456789abcdef0"],
  Subnets: ["subnet-0123456789abcdef0", "subnet-abcdef0123456789"]
});

Cross-Zone Load Balancing ​

Create a load balancer with cross-zone load balancing enabled for better traffic distribution.

ts
const crossZoneLoadBalancer = await AWS.ElasticLoadBalancing.LoadBalancer("cross-zone-load-balancer", {
  LoadBalancerName: "my-cross-zone-load-balancer",
  Listeners: [{
    LoadBalancerPort: 80,
    InstancePort: 80,
    Protocol: "HTTP"
  }],
  CrossZone: true,
  AvailabilityZones: ["us-west-2a", "us-west-2b"],
  SecurityGroups: ["sg-0123456789abcdef0"],
  Subnets: ["subnet-0123456789abcdef0", "subnet-abcdef0123456789"]
});