com.pulumi.awsnative.ecs.kotlin.inputs.ServiceLoadBalancerArgs.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-aws-native-kotlin Show documentation
Show all versions of pulumi-aws-native-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.awsnative.ecs.kotlin.inputs
import com.pulumi.awsnative.ecs.inputs.ServiceLoadBalancerArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
/**
* The ``LoadBalancer`` property specifies details on a load balancer that is used with a service.
* If the service is using the ``CODE_DEPLOY`` deployment controller, the service is required to use either an Application Load Balancer or Network Load Balancer. When you are creating an ACDlong deployment group, you specify two target groups (referred to as a ``targetGroupPair``). Each target group binds to a separate task set in the deployment. The load balancer can also have up to two listeners, a required listener for production traffic and an optional listener that allows you to test new revisions of the service before routing production traffic to it.
* Services with tasks that use the ``awsvpc`` network mode (for example, those with the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers are not supported. Also, when you create any target groups for these services, you must choose ``ip`` as the target type, not ``instance``. Tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance.
* @property containerName The name of the container (as it appears in a container definition) to associate with the load balancer.
* You need to specify the container name when configuring the target group for an Amazon ECS load balancer.
* @property containerPort The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.
* @property loadBalancerName The name of the load balancer to associate with the Amazon ECS service or task set.
* If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.
* @property targetGroupArn The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.
* A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer.
* For services using the ``ECS`` deployment controller, you can specify one or multiple target groups. For more information, see [Registering multiple target groups with a service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) in the *Amazon Elastic Container Service Developer Guide*.
* For services using the ``CODE_DEPLOY`` deployment controller, you're required to define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) in the *Amazon Elastic Container Service Developer Guide*.
* If your service's task definition uses the ``awsvpc`` network mode, you must choose ``ip`` as the target type, not ``instance``. Do this when creating your target groups because tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance. This network mode is required for the Fargate launch type.
*/
public data class ServiceLoadBalancerArgs(
public val containerName: Output? = null,
public val containerPort: Output? = null,
public val loadBalancerName: Output? = null,
public val targetGroupArn: Output? = null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.awsnative.ecs.inputs.ServiceLoadBalancerArgs =
com.pulumi.awsnative.ecs.inputs.ServiceLoadBalancerArgs.builder()
.containerName(containerName?.applyValue({ args0 -> args0 }))
.containerPort(containerPort?.applyValue({ args0 -> args0 }))
.loadBalancerName(loadBalancerName?.applyValue({ args0 -> args0 }))
.targetGroupArn(targetGroupArn?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [ServiceLoadBalancerArgs].
*/
@PulumiTagMarker
public class ServiceLoadBalancerArgsBuilder internal constructor() {
private var containerName: Output? = null
private var containerPort: Output? = null
private var loadBalancerName: Output? = null
private var targetGroupArn: Output? = null
/**
* @param value The name of the container (as it appears in a container definition) to associate with the load balancer.
* You need to specify the container name when configuring the target group for an Amazon ECS load balancer.
*/
@JvmName("hixrlnfccebyuroy")
public suspend fun containerName(`value`: Output) {
this.containerName = value
}
/**
* @param value The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.
*/
@JvmName("jbkmtxtmkmdtiexv")
public suspend fun containerPort(`value`: Output) {
this.containerPort = value
}
/**
* @param value The name of the load balancer to associate with the Amazon ECS service or task set.
* If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.
*/
@JvmName("jhljcmedfgniujmp")
public suspend fun loadBalancerName(`value`: Output) {
this.loadBalancerName = value
}
/**
* @param value The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.
* A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer.
* For services using the ``ECS`` deployment controller, you can specify one or multiple target groups. For more information, see [Registering multiple target groups with a service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) in the *Amazon Elastic Container Service Developer Guide*.
* For services using the ``CODE_DEPLOY`` deployment controller, you're required to define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) in the *Amazon Elastic Container Service Developer Guide*.
* If your service's task definition uses the ``awsvpc`` network mode, you must choose ``ip`` as the target type, not ``instance``. Do this when creating your target groups because tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance. This network mode is required for the Fargate launch type.
*/
@JvmName("ydgwvxcbnokbauyp")
public suspend fun targetGroupArn(`value`: Output) {
this.targetGroupArn = value
}
/**
* @param value The name of the container (as it appears in a container definition) to associate with the load balancer.
* You need to specify the container name when configuring the target group for an Amazon ECS load balancer.
*/
@JvmName("xykabjrgjxyfjbeb")
public suspend fun containerName(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.containerName = mapped
}
/**
* @param value The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.
*/
@JvmName("nsegbsijferdyund")
public suspend fun containerPort(`value`: Int?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.containerPort = mapped
}
/**
* @param value The name of the load balancer to associate with the Amazon ECS service or task set.
* If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.
*/
@JvmName("olprjnrliosqkdfc")
public suspend fun loadBalancerName(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.loadBalancerName = mapped
}
/**
* @param value The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.
* A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer.
* For services using the ``ECS`` deployment controller, you can specify one or multiple target groups. For more information, see [Registering multiple target groups with a service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) in the *Amazon Elastic Container Service Developer Guide*.
* For services using the ``CODE_DEPLOY`` deployment controller, you're required to define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) in the *Amazon Elastic Container Service Developer Guide*.
* If your service's task definition uses the ``awsvpc`` network mode, you must choose ``ip`` as the target type, not ``instance``. Do this when creating your target groups because tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance. This network mode is required for the Fargate launch type.
*/
@JvmName("rrwfkmpfdyedmrid")
public suspend fun targetGroupArn(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.targetGroupArn = mapped
}
internal fun build(): ServiceLoadBalancerArgs = ServiceLoadBalancerArgs(
containerName = containerName,
containerPort = containerPort,
loadBalancerName = loadBalancerName,
targetGroupArn = targetGroupArn,
)
}