Class: AWSCDK::ECS::CfnTaskSet::LoadBalancerProperty

Inherits:
Jsii::Struct
  • Object
show all
Defined in:
ecs/cfn_task_set.rb

Overview

The load balancer configuration to use with a service or task set.

When you add, update, or remove a load balancer configuration, Amazon ECS starts a new deployment with the updated Elastic Load Balancing configuration. This causes tasks to register to and deregister from load balancers.

We recommend that you verify this on a test environment before you update the Elastic Load Balancing configuration.

A service-linked role is required for services that use multiple target groups. For more information, see Using service-linked roles in the Amazon Elastic Container Service Developer Guide .

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(container_name: nil, container_port: nil, target_group_arn: nil) ⇒ LoadBalancerProperty

Returns a new instance of LoadBalancerProperty.

Parameters:

  • container_name (String, nil) (defaults to: nil)

    The name of the container (as it appears in a container definition) to associate with the load balancer.

  • container_port (Numeric, nil) (defaults to: nil)

    The port on the container to associate with the load balancer.

  • target_group_arn (String, nil) (defaults to: nil)

    The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.



836
837
838
839
840
841
842
843
# File 'ecs/cfn_task_set.rb', line 836

def initialize(container_name: nil, container_port: nil, target_group_arn: nil)
  @container_name = container_name
  Jsii::Type.check_type(@container_name, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "containerName") unless @container_name.nil?
  @container_port = container_port
  Jsii::Type.check_type(@container_port, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "containerPort") unless @container_port.nil?
  @target_group_arn = target_group_arn
  Jsii::Type.check_type(@target_group_arn, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "targetGroupArn") unless @target_group_arn.nil?
end

Instance Attribute Details

#container_nameString? (readonly)

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.



851
852
853
# File 'ecs/cfn_task_set.rb', line 851

def container_name
  @container_name
end

#container_portNumeric? (readonly)

The port on the container to associate with the load balancer.

This port must correspond to a container_port 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 host_port of the port mapping.



858
859
860
# File 'ecs/cfn_task_set.rb', line 858

def container_port
  @container_port
end

#target_group_arnString? (readonly)

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 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 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.



871
872
873
# File 'ecs/cfn_task_set.rb', line 871

def target_group_arn
  @target_group_arn
end

Class Method Details

.jsii_propertiesObject



873
874
875
876
877
878
879
# File 'ecs/cfn_task_set.rb', line 873

def self.jsii_properties
  {
    :container_name => "containerName",
    :container_port => "containerPort",
    :target_group_arn => "targetGroupArn",
  }
end

Instance Method Details

#to_jsiiObject



881
882
883
884
885
886
887
888
889
# File 'ecs/cfn_task_set.rb', line 881

def to_jsii
  result = {}
  result.merge!({
    "containerName" => @container_name,
    "containerPort" => @container_port,
    "targetGroupArn" => @target_group_arn,
  })
  result.compact
end