Spaces:
Sleeping
Sleeping
# Variables | |
CLUSTER_NAME="CS553" | |
TASK_DEFINITION_NAME="CSS553_CaseStudy_4" | |
CONTAINER_NAME="CaseStudy4Image" | |
IMAGE_URI="venkateshroshan/mlops-cs4:latest" | |
VCPU="0.5" | |
MEMORY="2048" | |
PORT="7860" | |
SECURITY_GROUP_NAME="CS553-SG" | |
echo "Starting ECS setup..." | |
# Step 1: Create ECS Cluster | |
echo "Creating ECS cluster: $CLUSTER_NAME..." | |
aws ecs create-cluster --cluster-name $CLUSTER_NAME | |
echo "ECS cluster $CLUSTER_NAME created successfully." | |
# Step 2: Register Task Definition | |
echo "Registering task definition: $TASK_DEFINITION_NAME..." | |
aws ecs register-task-definition \ | |
--family $TASK_DEFINITION_NAME \ | |
--network-mode awsvpc \ | |
--requires-compatibilities FARGATE \ | |
--cpu $VCPU \ | |
--memory $MEMORY \ | |
--container-definitions "[ | |
{ | |
\"name\": \"$CONTAINER_NAME\", | |
\"image\": \"$IMAGE_URI\", | |
\"portMappings\": [ | |
{ | |
\"containerPort\": $PORT, | |
\"protocol\": \"tcp\" | |
} | |
], | |
\"essential\": true | |
} | |
]" | |
echo "Task definition $TASK_DEFINITION_NAME registered successfully." | |
# Step 3: Get Default VPC ID | |
echo "Retrieving default VPC ID..." | |
VPC_ID=$(aws ec2 describe-vpcs --filters "Name=isDefault,Values=true" --query "Vpcs[0].VpcId" --output text) | |
if [ -z "$VPC_ID" ]; then | |
echo "Error: Default VPC not found. Exiting." | |
exit 1 | |
fi | |
echo "Default VPC ID: $VPC_ID." | |
# Step 4: Create Security Group | |
echo "Creating security group: $SECURITY_GROUP_NAME..." | |
SECURITY_GROUP_ID=$(aws ec2 create-security-group --group-name $SECURITY_GROUP_NAME --description "Security group for CS553 task" --vpc-id $VPC_ID --query 'GroupId' --output text) | |
echo "Security group created with ID: $SECURITY_GROUP_ID." | |
# Step 5: Add Inbound Rule to Security Group | |
echo "Adding inbound rule to security group for port $PORT..." | |
aws ec2 authorize-security-group-ingress \ | |
--group-id $SECURITY_GROUP_ID \ | |
--protocol tcp \ | |
--port $PORT \ | |
--cidr 0.0.0.0/0 | |
echo "Inbound rule added successfully." | |
# Step 6: Run ECS Task | |
echo "Running ECS task in cluster $CLUSTER_NAME..." | |
aws ecs run-task \ | |
--cluster $CLUSTER_NAME \ | |
--launch-type FARGATE \ | |
--network-configuration "awsvpcConfiguration={ | |
subnets=[\"$(aws ec2 describe-subnets --filters Name=vpc-id,Values=$VPC_ID --query 'Subnets[0].SubnetId' --output text)\"], | |
securityGroups=[\"$SECURITY_GROUP_ID\"], | |
assignPublicIp=\"ENABLED\"}" \ | |
--task-definition $TASK_DEFINITION_NAME | |
echo "Task is running in cluster $CLUSTER_NAME." | |
echo "ECS setup completed successfully." | |