Spaces:
Sleeping
Sleeping
Commit ·
951d434
1
Parent(s): 8a00a9b
added AWS deployment script
Browse files- deploy_aws.sh +78 -0
deploy_aws.sh
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Variables
|
| 4 |
+
CLUSTER_NAME="CS553"
|
| 5 |
+
TASK_DEFINITION_NAME="CSS553_CaseStudy_4"
|
| 6 |
+
CONTAINER_NAME="CaseStudy4Image"
|
| 7 |
+
IMAGE_URI="venkateshroshan/mlops-cs4:latest"
|
| 8 |
+
VCPU="0.5"
|
| 9 |
+
MEMORY="2048"
|
| 10 |
+
PORT="7860"
|
| 11 |
+
SECURITY_GROUP_NAME="CS553-SG"
|
| 12 |
+
|
| 13 |
+
echo "Starting ECS setup..."
|
| 14 |
+
|
| 15 |
+
# Step 1: Create ECS Cluster
|
| 16 |
+
echo "Creating ECS cluster: $CLUSTER_NAME..."
|
| 17 |
+
aws ecs create-cluster --cluster-name $CLUSTER_NAME
|
| 18 |
+
echo "ECS cluster $CLUSTER_NAME created successfully."
|
| 19 |
+
|
| 20 |
+
# Step 2: Register Task Definition
|
| 21 |
+
echo "Registering task definition: $TASK_DEFINITION_NAME..."
|
| 22 |
+
aws ecs register-task-definition \
|
| 23 |
+
--family $TASK_DEFINITION_NAME \
|
| 24 |
+
--network-mode awsvpc \
|
| 25 |
+
--requires-compatibilities FARGATE \
|
| 26 |
+
--cpu $VCPU \
|
| 27 |
+
--memory $MEMORY \
|
| 28 |
+
--container-definitions "[
|
| 29 |
+
{
|
| 30 |
+
\"name\": \"$CONTAINER_NAME\",
|
| 31 |
+
\"image\": \"$IMAGE_URI\",
|
| 32 |
+
\"portMappings\": [
|
| 33 |
+
{
|
| 34 |
+
\"containerPort\": $PORT,
|
| 35 |
+
\"protocol\": \"tcp\"
|
| 36 |
+
}
|
| 37 |
+
],
|
| 38 |
+
\"essential\": true
|
| 39 |
+
}
|
| 40 |
+
]"
|
| 41 |
+
echo "Task definition $TASK_DEFINITION_NAME registered successfully."
|
| 42 |
+
|
| 43 |
+
# Step 3: Get Default VPC ID
|
| 44 |
+
echo "Retrieving default VPC ID..."
|
| 45 |
+
VPC_ID=$(aws ec2 describe-vpcs --filters "Name=isDefault,Values=true" --query "Vpcs[0].VpcId" --output text)
|
| 46 |
+
if [ -z "$VPC_ID" ]; then
|
| 47 |
+
echo "Error: Default VPC not found. Exiting."
|
| 48 |
+
exit 1
|
| 49 |
+
fi
|
| 50 |
+
echo "Default VPC ID: $VPC_ID."
|
| 51 |
+
|
| 52 |
+
# Step 4: Create Security Group
|
| 53 |
+
echo "Creating security group: $SECURITY_GROUP_NAME..."
|
| 54 |
+
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)
|
| 55 |
+
echo "Security group created with ID: $SECURITY_GROUP_ID."
|
| 56 |
+
|
| 57 |
+
# Step 5: Add Inbound Rule to Security Group
|
| 58 |
+
echo "Adding inbound rule to security group for port $PORT..."
|
| 59 |
+
aws ec2 authorize-security-group-ingress \
|
| 60 |
+
--group-id $SECURITY_GROUP_ID \
|
| 61 |
+
--protocol tcp \
|
| 62 |
+
--port $PORT \
|
| 63 |
+
--cidr 0.0.0.0/0
|
| 64 |
+
echo "Inbound rule added successfully."
|
| 65 |
+
|
| 66 |
+
# Step 6: Run ECS Task
|
| 67 |
+
echo "Running ECS task in cluster $CLUSTER_NAME..."
|
| 68 |
+
aws ecs run-task \
|
| 69 |
+
--cluster $CLUSTER_NAME \
|
| 70 |
+
--launch-type FARGATE \
|
| 71 |
+
--network-configuration "awsvpcConfiguration={
|
| 72 |
+
subnets=[\"$(aws ec2 describe-subnets --filters Name=vpc-id,Values=$VPC_ID --query 'Subnets[0].SubnetId' --output text)\"],
|
| 73 |
+
securityGroups=[\"$SECURITY_GROUP_ID\"],
|
| 74 |
+
assignPublicIp=\"ENABLED\"}" \
|
| 75 |
+
--task-definition $TASK_DEFINITION_NAME
|
| 76 |
+
echo "Task is running in cluster $CLUSTER_NAME."
|
| 77 |
+
|
| 78 |
+
echo "ECS setup completed successfully."
|