Skip to content
v2.277.0

LoadBalancerTargetOptions Struct ​

Properties for defining an ECS target.

The port mapping for it must already have been created through addPortMapping().

Example ​

ts
declare const cluster: ecs.Cluster;
declare const taskDefinition: ecs.TaskDefinition;
declare const blueTargetGroup: elbv2.ApplicationTargetGroup;
declare const greenTargetGroup: elbv2.ApplicationTargetGroup;
declare const prodListenerRule: elbv2.ApplicationListenerRule;

const service = new ecs.FargateService(this, 'Service', {
  cluster,
  taskDefinition,
  deploymentStrategy: ecs.DeploymentStrategy.LINEAR,
  linearConfiguration: {
    stepPercent: 10.0,
    stepBakeTime: Duration.minutes(5),
  },
});

const target = service.loadBalancerTarget({
  containerName: 'web',
  containerPort: 80,
  alternateTarget: new ecs.AlternateTarget('AlternateTarget', {
    alternateTargetGroup: greenTargetGroup,
    productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
  }),
});

target.attachToApplicationTargetGroup(blueTargetGroup);
python
# cluster: ecs.Cluster
# task_definition: ecs.TaskDefinition
# blue_target_group: elbv2.ApplicationTargetGroup
# green_target_group: elbv2.ApplicationTargetGroup
# prod_listener_rule: elbv2.ApplicationListenerRule


service = ecs.FargateService(self, "Service",
    cluster=cluster,
    task_definition=task_definition,
    deployment_strategy=ecs.DeploymentStrategy.LINEAR,
    linear_configuration=ecs.TrafficShiftConfig(
        step_percent=10,
        step_bake_time=Duration.minutes(5)
    )
)

target = service.load_balancer_target(
    container_name="web",
    container_port=80,
    alternate_target=ecs.AlternateTarget("AlternateTarget",
        alternate_target_group=green_target_group,
        production_listener=ecs.ListenerRuleConfiguration.application_listener_rule(prod_listener_rule)
    )
)

target.attach_to_application_target_group(blue_target_group)
java
Cluster cluster;
TaskDefinition taskDefinition;
ApplicationTargetGroup blueTargetGroup;
ApplicationTargetGroup greenTargetGroup;
ApplicationListenerRule prodListenerRule;


FargateService service = FargateService.Builder.create(this, "Service")
        .cluster(cluster)
        .taskDefinition(taskDefinition)
        .deploymentStrategy(DeploymentStrategy.LINEAR)
        .linearConfiguration(TrafficShiftConfig.builder()
                .stepPercent(10)
                .stepBakeTime(Duration.minutes(5))
                .build())
        .build();

IEcsLoadBalancerTarget target = service.loadBalancerTarget(LoadBalancerTargetOptions.builder()
        .containerName("web")
        .containerPort(80)
        .alternateTarget(AlternateTarget.Builder.create("AlternateTarget")
                .alternateTargetGroup(greenTargetGroup)
                .productionListener(ListenerRuleConfiguration.applicationListenerRule(prodListenerRule))
                .build())
        .build());

target.attachToApplicationTargetGroup(blueTargetGroup);
csharp
// Install: dotnet add package Amazon.CDK.Lib
Cluster cluster;
TaskDefinition taskDefinition;
ApplicationTargetGroup blueTargetGroup;
ApplicationTargetGroup greenTargetGroup;
ApplicationListenerRule prodListenerRule;


var service = new FargateService(this, "Service", new FargateServiceProps {
    Cluster = cluster,
    TaskDefinition = taskDefinition,
    DeploymentStrategy = DeploymentStrategy.LINEAR,
    LinearConfiguration = new TrafficShiftConfig {
        StepPercent = 10,
        StepBakeTime = Duration.Minutes(5)
    }
});

var target = service.LoadBalancerTarget(new LoadBalancerTargetOptions {
    ContainerName = "web",
    ContainerPort = 80,
    AlternateTarget = new AlternateTarget("AlternateTarget", new AlternateTargetProps {
        AlternateTargetGroup = greenTargetGroup,
        ProductionListener = ListenerRuleConfiguration.ApplicationListenerRule(prodListenerRule)
    })
});

target.AttachToApplicationTargetGroup(blueTargetGroup);
go
// Install: go get github.com/aws/aws-cdk-go/awscdk/v2
var cluster Cluster
var taskDefinition TaskDefinition
var blueTargetGroup ApplicationTargetGroup
var greenTargetGroup ApplicationTargetGroup
var prodListenerRule ApplicationListenerRule


service := ecs.NewFargateService(this, jsii.String("Service"), &FargateServiceProps{
	Cluster: Cluster,
	TaskDefinition: TaskDefinition,
	DeploymentStrategy: ecs.DeploymentStrategy_LINEAR,
	LinearConfiguration: &TrafficShiftConfig{
		StepPercent: jsii.Number(10),
		StepBakeTime: awscdk.Duration_Minutes(jsii.Number(5)),
	},
})

target := service.LoadBalancerTarget(&LoadBalancerTargetOptions{
	ContainerName: jsii.String("web"),
	ContainerPort: jsii.Number(80),
	AlternateTarget: ecs.NewAlternateTarget(jsii.String("AlternateTarget"), &AlternateTargetProps{
		AlternateTargetGroup: greenTargetGroup,
		ProductionListener: ecs.ListenerRuleConfiguration_ApplicationListenerRule(prodListenerRule),
	}),
})

target.AttachToApplicationTargetGroup(blueTargetGroup)

Properties ​

alternateTargetoptionalIAlternateTargetalternate_targetoptionalIAlternateTargetalternateTargetoptionalIAlternateTargetAlternateTargetoptionalIAlternateTargetAlternateTargetoptionalIAlternateTarget#
Alternate target configuration for blue/green deployments.

Default: No alternate target configuration

containerNamestringcontainer_namestrcontainerNameStringContainerNamestringContainerName*stringrequired#
The name of the container.
containerPortoptionalnumbercontainer_portoptionalint | floatcontainerPortoptionalNumberContainerPortoptionaldoubleContainerPortoptional*float64#
The port number of the container.

Default: Container port of the first added port mapping.

Only applicable when using application/network load balancers.

protocoloptionalProtocolprotocoloptionalProtocolprotocoloptionalProtocolProtocoloptionalProtocolProtocoloptionalProtocol= Protocol.TCP#
The protocol used for the port mapping.

Only applicable when using application load balancers.