AWS Fargate: Create service with target group for load balancer

Viewed 982

Looking at the documentation for creating a service in Fargate (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_AWSCLI_Fargate.html#ECS_AWSCLI_Fargate_create_service), it does not advise you to create a target group for the service. A target group is necessary for attaching a load balancer so I have no idea why they don't include it in the documentation. Considering you can't add a load balancer to the service after creation, this is inevitably causing me a headache. So how do I go about making sure my Fargate service creates the target group(s) necessary so I can add an ELB to it?

If I go about creating a Target Group, https://aws.amazon.com/premiumsupport/knowledge-center/create-alb-auto-register/, there are no targets from my VPC to attach to, so this is basically useless as I'm doing something wrong on creation.

aws ecs create-service --cluster fargate-cluster --service-name fargate-service --task-definition sample-fargate:1 --desired-count 1 --launch-type "FARGATE" --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234]}"

Can anyone guide me here?

1 Answers

I ended up deleting the created service which didn't have a load balancer, creating the target group for the same VPC as my load balancer (IP type), and then grabbing the Arn of the target group for when I create the service:

aws ecs create-service --cluster evenflo-cms-dev --service-name django --task-definition evenflo-cms:4 --desired-count 1 --launch-type "FARGATE" --network-configuration "awsvpcConfiguration={subnets=[subnet-0950e9d7ffc3fc8e3, subnet-036375b8ae487f2c9],securityGroups=[sg-077d0e3ba1cfb4145],assignPublicIp=ENABLED}" --load-balancers='[{"targetGroupArn": "arn:aws:elasticloadbalancing:us-east-1:898591449577:targetgroup/evenflo-cms-api/f5501d5733c6d91c", "containerName": "django", "containerPort": 7000 }]'

Is there a cleaner way to approach this with Terraform? Probably. But I just wanted a straight way to accomplish this with the AWS CLI and to be able to understand the order in which things should be done. Hopefully this helps someone.

Related