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.