docs
reference
services
tessl install tessl/maven-com-pulumi--aws@7.16.0Pulumi 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.
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).
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;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();
}
}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();
}
}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();
}
}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());
}
}