GJoshi
GJoshi

Reputation: 171

How to create a aws fargate service with multiple load balancers

We are trying to create a service with the specified task definition using the create-service command of aws ecs cli. Our task definition is people-cloud:27.

 aws ecs create-service --cluster cloud1 --service-name docker-service --task-definition people-cloud:27 
--load-balancers targetGroupArn=arn:aws:elasticloadbalancing:ap-south-1:2******5555:targetgroup/ecsCloud/ee7f4c280b1672aa,containerName=app,containerPort=8080,targetGroupArn=arn:aws:elasticloadbalancing:ap-south-1:2******5555:targetgroup/ecsServer/54fcbf7052957660,containerName=app2,containerPort=2990 
--launch-type FARGATE --client-token AMOEBA@123 --desired-count 1 --network-configuration "awsvpcConfiguration={subnets=[subnet-0e11****f9e4218,subnet-0er****ufgrger],securityGroups=[sg-******5b***b3]}"

The command mentions that it can take multiple load balancers as input but when we provide them in comma separated format only the last one is taken into account.

In this case only one that is attached to app2 container is published in the output. Need help on this how to provide multiple load balancer information in the cli command.

Upvotes: 4

Views: 1853

Answers (2)

ANDgineer
ANDgineer

Reputation: 680

You can add JSON to any AWS CLI command.

aws ecs create-service --cluster mycluster \
    --cli-input-json '{"loadBalancers": [
    {
        "targetGroupArn": "my_target1_arn",
        "containerName": "mycontainer",
        "containerPort": 8080
    },
    {
        "targetGroupArn": "my_target2_arn",
        "containerName": "mycontainer",
        "containerPort": 80
    }
    ]}' \
    --service-name myservice \
    ...

Upvotes: 4

Haran
Haran

Reputation: 1120

Try without adding a comma. The documentation says --load-balancers is a type of list

aws ecs create-service --cluster cloud1 --service-name docker-service --task-definition people-cloud:27 
--load-balancers targetGroupArn=arn:aws:elasticloadbalancing:ap-south-1:2******5555:targetgroup/ecsCloud/ee7f4c280b1672aa,containerName=app,containerPort=8080 targetGroupArn=arn:aws:elasticloadbalancing:ap-south-1:2******5555:targetgroup/ecsServer/54fcbf7052957660,containerName=app2,containerPort=2990 
--launch-type FARGATE --client-token AMOEBA@123 --desired-count 1 --network-configuration "awsvpcConfiguration={subnets=[subnet-0e11****f9e4218,subnet-0er****ufgrger],securityGroups=[sg-******5b***b3]}"

FYI: Refer the documentation on registering multiple target groups

Upvotes: 2

Related Questions