Class TargetGroup


  • public class TargetGroup
    extends com.pulumi.resources.CustomResource
    Provides a Target Group resource for use with Load Balancer resources. > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. ## Example Usage ### Instance Target Group
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ec2.Vpc;
     import com.pulumi.aws.ec2.VpcArgs;
     import com.pulumi.aws.lb.TargetGroup;
     import com.pulumi.aws.lb.TargetGroupArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var main = new Vpc("main", VpcArgs.builder()
                 .cidrBlock("10.0.0.0/16")
                 .build());
     
             var test = new TargetGroup("test", TargetGroupArgs.builder()
                 .name("tf-example-lb-tg")
                 .port(80)
                 .protocol("HTTP")
                 .vpcId(main.id())
                 .build());
     
         }
     }
     
     
    ### IP Target Group
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ec2.Vpc;
     import com.pulumi.aws.ec2.VpcArgs;
     import com.pulumi.aws.lb.TargetGroup;
     import com.pulumi.aws.lb.TargetGroupArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var main = new Vpc("main", VpcArgs.builder()
                 .cidrBlock("10.0.0.0/16")
                 .build());
     
             var ip_example = new TargetGroup("ip-example", TargetGroupArgs.builder()
                 .name("tf-example-lb-tg")
                 .port(80)
                 .protocol("HTTP")
                 .targetType("ip")
                 .vpcId(main.id())
                 .build());
     
         }
     }
     
     
    ### Lambda Target Group
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.lb.TargetGroup;
     import com.pulumi.aws.lb.TargetGroupArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var lambda_example = new TargetGroup("lambda-example", TargetGroupArgs.builder()
                 .name("tf-example-lb-tg")
                 .targetType("lambda")
                 .build());
     
         }
     }
     
     
    ### ALB Target Group
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.lb.TargetGroup;
     import com.pulumi.aws.lb.TargetGroupArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var alb_example = new TargetGroup("alb-example", TargetGroupArgs.builder()
                 .name("tf-example-lb-alb-tg")
                 .targetType("alb")
                 .port(80)
                 .protocol("TCP")
                 .vpcId(main.id())
                 .build());
     
         }
     }
     
     
    ### Target group with unhealthy connection termination disabled
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.lb.TargetGroup;
     import com.pulumi.aws.lb.TargetGroupArgs;
     import com.pulumi.aws.lb.inputs.TargetGroupTargetHealthStateArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var tcp_example = new TargetGroup("tcp-example", TargetGroupArgs.builder()
                 .targetHealthStates(TargetGroupTargetHealthStateArgs.builder()
                     .enableUnhealthyConnectionTermination(false)
                     .build())
                 .name("tf-example-lb-nlb-tg")
                 .port(25)
                 .protocol("TCP")
                 .vpcId(main.id())
                 .build());
     
         }
     }
     
     
    ### Target group with health requirements
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.lb.TargetGroup;
     import com.pulumi.aws.lb.TargetGroupArgs;
     import com.pulumi.aws.lb.inputs.TargetGroupTargetGroupHealthArgs;
     import com.pulumi.aws.lb.inputs.TargetGroupTargetGroupHealthDnsFailoverArgs;
     import com.pulumi.aws.lb.inputs.TargetGroupTargetGroupHealthUnhealthyStateRoutingArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var tcp_example = new TargetGroup("tcp-example", TargetGroupArgs.builder()
                 .targetGroupHealth(TargetGroupTargetGroupHealthArgs.builder()
                     .dnsFailover(TargetGroupTargetGroupHealthDnsFailoverArgs.builder()
                         .minimumHealthyTargetsCount("1")
                         .minimumHealthyTargetsPercentage("off")
                         .build())
                     .unhealthyStateRouting(TargetGroupTargetGroupHealthUnhealthyStateRoutingArgs.builder()
                         .minimumHealthyTargetsCount(1)
                         .minimumHealthyTargetsPercentage("off")
                         .build())
                     .build())
                 .name("tf-example-lb-nlb-tg")
                 .port(80)
                 .protocol("TCP")
                 .vpcId(main.id())
                 .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required - `arn` (String) ARN of the target group. Using `pulumi import`, import Target Groups using their ARN. For example: ```sh $ pulumi import aws:alb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Detail

      • TargetGroup

        public TargetGroup​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • TargetGroup

        public TargetGroup​(java.lang.String name,
                           @Nullable
                           TargetGroupArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • TargetGroup

        public TargetGroup​(java.lang.String name,
                           @Nullable
                           TargetGroupArgs args,
                           @Nullable
                           com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the Target Group (matches `id`).
      • arnSuffix

        public com.pulumi.core.Output<java.lang.String> arnSuffix()
        Returns:
        ARN suffix for use with CloudWatch Metrics.
      • connectionTermination

        public com.pulumi.core.Output<java.lang.Boolean> connectionTermination()
        Returns:
        Whether to terminate connections at the end of the deregistration timeout on Network Load Balancers. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#deregistration-delay) for more information. Default is `false`.
      • deregistrationDelay

        public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> deregistrationDelay()
        Returns:
        Amount time for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds.
      • healthCheck

        public com.pulumi.core.Output<TargetGroupHealthCheck> healthCheck()
        Returns:
        Health Check configuration block. Detailed below.
      • ipAddressType

        public com.pulumi.core.Output<java.lang.String> ipAddressType()
        Returns:
        The type of IP addresses used by the target group, only supported when target type is set to `ip`. Possible values are `ipv4` or `ipv6`.
      • lambdaMultiValueHeadersEnabled

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> lambdaMultiValueHeadersEnabled()
        Returns:
        Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when `targetType` is `lambda`. Default is `false`.
      • loadBalancerArns

        public com.pulumi.core.Output<java.util.List<java.lang.String>> loadBalancerArns()
        Returns:
        ARNs of the Load Balancers associated with the Target Group.
      • loadBalancingAlgorithmType

        public com.pulumi.core.Output<java.lang.String> loadBalancingAlgorithmType()
        Returns:
        Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `roundRobin`, `leastOutstandingRequests`, or `weightedRandom`. The default is `roundRobin`.
      • loadBalancingAnomalyMitigation

        public com.pulumi.core.Output<java.lang.String> loadBalancingAnomalyMitigation()
        Returns:
        Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weightedRandom` load balancing algorithm type. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#automatic-target-weights) for more information. The value is `"on"` or `"off"`. The default is `"off"`.
      • loadBalancingCrossZoneEnabled

        public com.pulumi.core.Output<java.lang.String> loadBalancingCrossZoneEnabled()
        Returns:
        Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"useLoadBalancerConfiguration"`. The default is `"useLoadBalancerConfiguration"`.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name of the target group. If omitted, this provider will assign a random, unique name. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen.
      • namePrefix

        public com.pulumi.core.Output<java.lang.String> namePrefix()
        Returns:
        Creates a unique name beginning with the specified prefix. Conflicts with `name`. Cannot be longer than 6 characters.
      • port

        public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> port()
        Returns:
        Port on which targets receive traffic, unless overridden when registering a specific target. Required when `targetType` is `instance`, `ip` or `alb`. Does not apply when `targetType` is `lambda`.
      • preserveClientIp

        public com.pulumi.core.Output<java.lang.String> preserveClientIp()
        Returns:
        Whether client IP preservation is enabled. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#client-ip-preservation) for more information.
      • protocol

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> protocol()
        Returns:
        Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, `UDP`, `QUIC`, or `TCP_QUIC`. Required when `targetType` is `instance`, `ip`, or `alb`. Does not apply when `targetType` is `lambda`.
      • protocolVersion

        public com.pulumi.core.Output<java.lang.String> protocolVersion()
        Returns:
        Only applicable when `protocol` is `HTTP` or `HTTPS`. The protocol version. Specify `GRPC` to send requests to targets using gRPC. Specify `HTTP2` to send requests to targets using HTTP/2. The default is `HTTP1`, which sends requests to targets using HTTP/1.1
      • proxyProtocolV2

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> proxyProtocolV2()
        Returns:
        Whether to enable support for proxy protocol v2 on Network Load Balancers. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#proxy-protocol) for more information. Default is `false`.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • slowStart

        public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> slowStart()
        Returns:
        Amount time for targets to warm up before the load balancer sends them a full share of requests. The range is 30-900 seconds or 0 to disable. The default value is 0 seconds.
      • stickiness

        public com.pulumi.core.Output<TargetGroupStickiness> stickiness()
        Returns:
        Stickiness configuration block. Detailed below.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • targetControlPort

        public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> targetControlPort()
        Returns:
        Port on which the target control agent and application load balancer exchange management traffic for the target optimizer feature. Only applicable for Application Load Balancer target groups when `targetType` is `instance` or `ip`.
      • targetFailovers

        public com.pulumi.core.Output<java.util.List<TargetGroupTargetFailover>> targetFailovers()
        Returns:
        Target failover block. Only applicable for Gateway Load Balancer target groups. See targetFailover for more information.
      • targetGroupHealth

        public com.pulumi.core.Output<TargetGroupTargetGroupHealth> targetGroupHealth()
        Returns:
        Target health requirements block. See targetGroupHealth for more information.
      • targetHealthStates

        public com.pulumi.core.Output<java.util.List<TargetGroupTargetHealthState>> targetHealthStates()
        Returns:
        Target health state block. Only applicable for Network Load Balancer target groups when `protocol` is `TCP` or `TLS`. See targetHealthState for more information.
      • targetType

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> targetType()
        Returns:
        Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. Note that you can't specify targets for a target group using both instance IDs and IP addresses. If the target type is `ip`, specify IP addresses from the subnets of the VPC for the target group, the RFC 1918 range (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16), and the RFC 6598 range (100.64.0.0/10). You can't specify publicly routable IP addresses. Network Load Balancers do not support the `lambda` target type. Application Load Balancers do not support the `alb` target type.
      • vpcId

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> vpcId()
        Returns:
        Identifier of the VPC in which to create the target group. Required when `targetType` is `instance`, `ip` or `alb`. Does not apply when `targetType` is `lambda`.
      • get

        public static TargetGroup get​(java.lang.String name,
                                      com.pulumi.core.Output<java.lang.String> id,
                                      @Nullable
                                      TargetGroupState state,
                                      @Nullable
                                      com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.