Ctrl + k

or run

tessl search
Log in

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.pulumi/aws@7.16.x

docs

common-patterns.mdgetting-started.mdindex.mdprovider.md
tile.json

tessl/maven-com-pulumi--aws

tessl install tessl/maven-com-pulumi--aws@7.16.0

Pulumi Java SDK for AWS providing strongly-typed Infrastructure-as-Code for 227 AWS service packages including compute, storage, databases, networking, security, analytics, machine learning, and more.

load-balancers.mddocs/services/networking/

Load Balancers

AWS provides Application Load Balancer (ALB), Network Load Balancer (NLB), and Classic Load Balancer (ELB).

AWS provides Application Load Balancer (ALB), Network Load Balancer (NLB), and Classic Load Balancer (ELB).

Core Imports

import com.pulumi.aws.lb.LoadBalancer;
import com.pulumi.aws.lb.LoadBalancerArgs;
import com.pulumi.aws.lb.TargetGroup;
import com.pulumi.aws.lb.TargetGroupArgs;
import com.pulumi.aws.lb.Listener;
import com.pulumi.aws.lb.ListenerArgs;
import com.pulumi.aws.lb.ListenerRule;
import com.pulumi.aws.lb.ListenerRuleArgs;
import com.pulumi.aws.lb.TargetGroupAttachment;
import com.pulumi.aws.lb.TargetGroupAttachmentArgs;
import com.pulumi.aws.lb.LbFunctions;

LoadBalancer Resource

Create and manage Application or Network Load Balancers.

@ResourceType(type="aws:lb/loadBalancer:LoadBalancer")
public class LoadBalancer extends com.pulumi.resources.CustomResource {
    public LoadBalancer(String name);
    public LoadBalancer(String name, @Nullable LoadBalancerArgs args);
    public LoadBalancer(String name, @Nullable LoadBalancerArgs args, @Nullable CustomResourceOptions options);

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> arnSuffix();
    public Output<String> name();
    public Output<String> namePrefix();
    public Output<String> dnsName();
    public Output<String> zoneId();
    public Output<Optional<String>> loadBalancerType();
    public Output<Boolean> internal();
    public Output<Optional<List<String>>> securityGroups();
    public Output<List<LoadBalancerSubnetMapping>> subnetMappings();
    public Output<List<String>> subnets();
    public Output<Optional<String>> ipAddressType();
    public Output<Optional<String>> customerOwnedIpv4Pool();
    public Output<Optional<Boolean>> enableDeletionProtection();
    public Output<Optional<Boolean>> enableCrossZoneLoadBalancing();
    public Output<Optional<Boolean>> enableHttp2();
    public Output<Optional<Boolean>> enableWafFailOpen();
    public Output<Optional<Boolean>> preserveHostHeader();
    public Output<Optional<Integer>> idleTimeout();
    public Output<Optional<Boolean>> enableTlsVersionAndCipherSuiteHeaders();
    public Output<Optional<Boolean>> enableXffClientPort();
    public Output<Optional<String>> xffHeaderProcessingMode();
    public Output<Optional<Boolean>> dnsRecordClientRoutingPolicy();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

public class LoadBalancerArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        // Basic Configuration
        public Builder name(Output<String> name);
        public Builder namePrefix(Output<String> namePrefix);
        public Builder loadBalancerType(Output<String> loadBalancerType); // "application" or "network"
        public Builder internal(Output<Boolean> internal);

        // Network Configuration
        public Builder subnets(Output<List<String>> subnets);
        public Builder subnetMappings(Output<List<LoadBalancerSubnetMappingArgs>> subnetMappings);
        public Builder securityGroups(Output<List<String>> securityGroups);
        public Builder ipAddressType(Output<String> ipAddressType);
        public Builder customerOwnedIpv4Pool(Output<String> customerOwnedIpv4Pool);

        // ALB Configuration
        public Builder enableDeletionProtection(Output<Boolean> enableDeletionProtection);
        public Builder enableCrossZoneLoadBalancing(Output<Boolean> enableCrossZoneLoadBalancing);
        public Builder enableHttp2(Output<Boolean> enableHttp2);
        public Builder enableWafFailOpen(Output<Boolean> enableWafFailOpen);
        public Builder preserveHostHeader(Output<Boolean> preserveHostHeader);
        public Builder idleTimeout(Output<Integer> idleTimeout);
        public Builder enableTlsVersionAndCipherSuiteHeaders(Output<Boolean> enableTlsVersionAndCipherSuiteHeaders);
        public Builder enableXffClientPort(Output<Boolean> enableXffClientPort);
        public Builder xffHeaderProcessingMode(Output<String> xffHeaderProcessingMode);
        public Builder dnsRecordClientRoutingPolicy(Output<String> dnsRecordClientRoutingPolicy);

        // Access Logs
        public Builder accessLogs(Output<LoadBalancerAccessLogsArgs> accessLogs);

        // Connection Logs
        public Builder connectionLogs(Output<LoadBalancerConnectionLogsArgs> connectionLogs);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public LoadBalancerArgs build();
    }
}

TargetGroup Resource

Create and manage target groups for load balancers.

@ResourceType(type="aws:lb/targetGroup:TargetGroup")
public class TargetGroup extends com.pulumi.resources.CustomResource {
    public TargetGroup(String name);
    public TargetGroup(String name, @Nullable TargetGroupArgs args);
    public TargetGroup(String name, @Nullable TargetGroupArgs args, @Nullable CustomResourceOptions options);

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> arnSuffix();
    public Output<String> name();
    public Output<String> namePrefix();
    public Output<Optional<Integer>> port();
    public Output<Optional<String>> protocol();
    public Output<Optional<String>> protocolVersion();
    public Output<Optional<String>> vpcId();
    public Output<Optional<String>> targetType();
    public Output<Optional<Boolean>> deregistrationDelay();
    public Output<Optional<TargetGroupHealthCheck>> healthCheck();
    public Output<Optional<TargetGroupStickiness>> stickiness();
    public Output<Optional<Boolean>> lambdaMultiValueHeadersEnabled();
    public Output<Optional<Boolean>> preserveClientIp();
    public Output<Optional<Boolean>> proxyProtocolV2();
    public Output<Optional<Integer>> slowStart();
    public Output<Optional<String>> loadBalancingAlgorithmType();
    public Output<Optional<String>> loadBalancingAnomalyMitigation();
    public Output<Optional<String>> loadBalancingCrossZoneEnabled();
    public Output<Optional<String>> ipAddressType();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

public class TargetGroupArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        // Basic Configuration
        public Builder name(Output<String> name);
        public Builder namePrefix(Output<String> namePrefix);
        public Builder port(Output<Integer> port);
        public Builder protocol(Output<String> protocol);
        public Builder protocolVersion(Output<String> protocolVersion);
        public Builder vpcId(Output<String> vpcId);
        public Builder targetType(Output<String> targetType); // "instance", "ip", "lambda", "alb"

        // Health Check
        public Builder healthCheck(Output<TargetGroupHealthCheckArgs> healthCheck);

        // Stickiness
        public Builder stickiness(Output<TargetGroupStickinessArgs> stickiness);

        // Configuration
        public Builder deregistrationDelay(Output<Integer> deregistrationDelay);
        public Builder slowStart(Output<Integer> slowStart);
        public Builder loadBalancingAlgorithmType(Output<String> loadBalancingAlgorithmType);
        public Builder loadBalancingAnomalyMitigation(Output<String> loadBalancingAnomalyMitigation);
        public Builder loadBalancingCrossZoneEnabled(Output<String> loadBalancingCrossZoneEnabled);
        public Builder ipAddressType(Output<String> ipAddressType);

        // Lambda Configuration
        public Builder lambdaMultiValueHeadersEnabled(Output<Boolean> lambdaMultiValueHeadersEnabled);

        // Network Configuration
        public Builder preserveClientIp(Output<String> preserveClientIp);
        public Builder proxyProtocolV2(Output<Boolean> proxyProtocolV2);

        // Connection Termination
        public Builder connectionTermination(Output<Boolean> connectionTermination);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public TargetGroupArgs build();
    }
}

Listener Resource

Create and manage load balancer listeners.

@ResourceType(type="aws:lb/listener:Listener")
public class Listener extends com.pulumi.resources.CustomResource {
    public Listener(String name, ListenerArgs args);
    public Listener(String name, ListenerArgs args, @Nullable CustomResourceOptions options);

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> loadBalancerArn();
    public Output<Integer> port();
    public Output<Optional<String>> protocol();
    public Output<Optional<String>> sslPolicy();
    public Output<Optional<String>> certificateArn();
    public Output<Optional<String>> alpnPolicy();
    public Output<List<ListenerDefaultAction>> defaultActions();
    public Output<Optional<List<ListenerMutualAuthentication>>> mutualAuthentication();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

public class ListenerArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        // Required
        public Builder loadBalancerArn(Output<String> loadBalancerArn);
        public Builder defaultActions(Output<List<ListenerDefaultActionArgs>> defaultActions);

        // Protocol Configuration
        public Builder port(Output<Integer> port);
        public Builder protocol(Output<String> protocol);
        public Builder sslPolicy(Output<String> sslPolicy);
        public Builder certificateArn(Output<String> certificateArn);
        public Builder alpnPolicy(Output<String> alpnPolicy);

        // Mutual TLS
        public Builder mutualAuthentication(Output<ListenerMutualAuthenticationArgs> mutualAuthentication);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public ListenerArgs build();
    }
}

Complete VPC with Load Balancer

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.ec2.*;
import com.pulumi.aws.lb.*;
import java.util.List;
import java.util.Map;

public class NetworkingExample {
    public static void main(String[] args) {
        Pulumi.run(NetworkingExample::stack);
    }

    public static void stack(Context ctx) {
        // Create VPC
        var vpc = new Vpc("appVpc", VpcArgs.builder()
            .cidrBlock("10.0.0.0/16")
            .enableDnsHostnames(true)
            .enableDnsSupport(true)
            .tags(Map.of("Name", "app-vpc"))
            .build());

        // Create public subnets
        var publicSubnet1 = new Subnet("publicSubnet1", SubnetArgs.builder()
            .vpcId(vpc.id())
            .cidrBlock("10.0.1.0/24")
            .availabilityZone("us-west-2a")
            .mapPublicIpOnLaunch(true)
            .tags(Map.of("Name", "public-subnet-1"))
            .build());

        var publicSubnet2 = new Subnet("publicSubnet2", SubnetArgs.builder()
            .vpcId(vpc.id())
            .cidrBlock("10.0.2.0/24")
            .availabilityZone("us-west-2b")
            .mapPublicIpOnLaunch(true)
            .tags(Map.of("Name", "public-subnet-2"))
            .build());

        // Create Internet Gateway
        var igw = new InternetGateway("igw", InternetGatewayArgs.builder()
            .vpcId(vpc.id())
            .tags(Map.of("Name", "main-igw"))
            .build());

        // Create Route Table
        var publicRt = new RouteTable("publicRt", RouteTableArgs.builder()
            .vpcId(vpc.id())
            .routes(List.of(RouteTableRouteArgs.builder()
                .cidrBlock("0.0.0.0/0")
                .gatewayId(igw.id())
                .build()))
            .tags(Map.of("Name", "public-rt"))
            .build());

        // Create Security Group for ALB
        var albSg = new SecurityGroup("albSg", SecurityGroupArgs.builder()
            .name("alb-sg")
            .description("Security group for ALB")
            .vpcId(vpc.id())
            .tags(Map.of("Name", "alb-security-group"))
            .build());

        // Create Application Load Balancer
        var alb = new LoadBalancer("appAlb", LoadBalancerArgs.builder()
            .name("app-alb")
            .loadBalancerType("application")
            .subnets(List.of(
                publicSubnet1.id(),
                publicSubnet2.id()
            ))
            .securityGroups(List.of(albSg.id()))
            .tags(Map.of("Name", "app-load-balancer"))
            .build());

        // Create Target Group
        var targetGroup = new TargetGroup("appTg", TargetGroupArgs.builder()
            .name("app-tg")
            .port(80)
            .protocol("HTTP")
            .vpcId(vpc.id())
            .targetType("ip")
            .healthCheck(TargetGroupHealthCheckArgs.builder()
                .enabled(true)
                .path("/health")
                .protocol("HTTP")
                .matcher("200")
                .build())
            .tags(Map.of("Name", "app-target-group"))
            .build());

        // Create Listener
        var listener = new Listener("appListener", ListenerArgs.builder()
            .loadBalancerArn(alb.arn())
            .port(80)
            .protocol("HTTP")
            .defaultActions(List.of(ListenerDefaultActionArgs.builder()
                .type("forward")
                .targetGroupArn(targetGroup.arn())
                .build()))
            .build());

        ctx.export("vpcId", vpc.id());
        ctx.export("albDnsName", alb.dnsName());
        ctx.export("targetGroupArn", targetGroup.arn());
    }
}