ECS with AWS CLI
Get list of clusters within ECS
aws ecs list-clusters --profile {profile-name}
// output
{
"clusterArns": [
"arn:aws:ecs:us-east-1:123456789:cluster/server-api",
"arn:aws:ecs:us-east-1:123456789:cluster/server-web"
]
}
Get list of services within a cluster
aws ecs list-services --cluster server-api --profile {profile-name}
//output
{
"serviceArns": [
"arn:aws:ecs:us-east-1:12345679:service/server-api-service"
]
}
Build docker and push image to ECR
# authenticate to ECR
aws ecr get-login-password --region us-east-1 --profile folau | docker login --username AWS --password-stdin {account-num}.dkr.ecr.us-east-1.amazonaws.com
# build image
docker build -t backend-api .
# tag
docker tag backend-api:latest {account-num}.dkr.ecr.us-east-1.amazonaws.com/backend-api:latest
# push imge to ECR
docker push {account-num}.dkr.ecr.us-east-1.amazonaws.com/backend-api:latest
Build docker, push image to ECR, and deploy image to ECS Fargate
#!/bin/sh
# us-east-1
aws ecr get-login-password --region us-east-1 --profile {aws-profile} | docker login --username AWS --password-stdin {aws-account-number}.dkr.ecr.{aws-region}.amazonaws.com
docker build -t {project-name} .
docker tag {project-name}:latest {aws-account-number}.dkr.ecr.{aws-region}.amazonaws.com/{ecr-repository}:latest
docker push {aws-account-number}.dkr.ecr.{aws-region}.amazonaws.com/{ecr-repository}:latest
# task-definition with no version will use the lastest version
aws ecs update-service \
--cluster {cluster-name} \
--service {service-name} \
--task-definition {task-def-name} \
--force-new-deployment \
--profile {profileName}
# Example
#!/bin/sh
aws ecr get-login-password --region us-east-1 --profile folau | docker login --username AWS --password-stdin 1231231231.dkr.ecr.us-east-1.amazonaws.com
docker build -t backend-api .
docker tag backend-api:latest 1231231231.dkr.ecr.us-east-1.amazonaws.com/backend-api:latest
docker push 1231231231.dkr.ecr.us-east-1.amazonaws.com/backend-api:latest
aws ecs update-service \
--cluster backend-api \
--service backend-api \
--task-definition backend-api \
--force-new-deployment \
--profile folau
Update desired count
aws ecs update-service --cluster backend-api --service backend-api --task-definition backend-api \
--desired-count 0 \
--profile folau