Skip to content

Instantly share code, notes, and snippets.

@ualter
Created October 18, 2019 10:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ualter/ce9e71dc871e448210144b38511ec6f5 to your computer and use it in GitHub Desktop.
Save ualter/ce9e71dc871e448210144b38511ec6f5 to your computer and use it in GitHub Desktop.
ECS with AWS EC2 (Without LoadBalancer/TargetGroups)

ECS with AWS EC2 (Without LoadBalancer/TargetGroups)

Create a ECS Cluster
# Cluster
$ aws ecs create-cluster  --cluster-name "quarkus-ec2"

# Register Task Definition (Host NetWorkMode for EC2)
$ aws ecs register-task-definition --cli-input-json file://task-definition-host.json
Create EC2 Instance for the Cluster
# (Deprecated - With the name is enough)  Get the ecsInstanceRole ARN 
$ ECS_ROLE=$(aws iam list-instance-profiles | jq -r '.InstanceProfiles[] | .Roles[] | select(.RoleName|contains("ecsInstanceRole")) | .Arn')

# Create Instances EC2 for the ECS Cluster
$ aws ec2 run-instances --image-id ami-077368b501184adb9 --count 1 --instance-type t2.micro --key-name ec2-ualter --security-group-ids $SG_ID --subnet-id $(aws ec2 describe-subnets --filters Name=vpc-id,Values=$VPC_ID | jq -r '.Subnets[0].SubnetId') --iam-instance-profile Name=ecsInstanceRole --user-data file://userData.txt --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Quarkus-EC2-Instance}]'

# List instance created
$ aws ec2 describe-instances --filter "Name=tag-value,Values=Quarkus-EC2-Instance"

# Check Instances in the Cluster Quarkus-EC2
$ aws ecs list-container-instances --cluster quarkus-ec2
Create Service
$ aws ecs create-service --cli-input-json file://service-definition-ec2.json
Test Service
# EC2 Instance IP
$ EC2_URL=$(aws ec2 describe-instances --filter "Name=tag-value,Values=Quarkus-EC2-Instance" | jq -r '.Reservations[] | .Instances[] | .PublicDnsName')

$ curl -w "\n" $EC2_URL:8080/hello/greeting/ualter

Clean Up

$ aws ecs update-service --service service-quarkus-ec2 --desired-count 0 --cluster quarkus-ec2

$ aws ecs delete-service --cluster "quarkus-ec2" --service "service-quarkus-ec2"

$ aws ec2 terminate-instances --instance-ids $(aws ec2 describe-instances --filter "Name=tag-value,Values=Quarkus-EC2-Instance" | jq -r '.Reservations[] | .Instances[] | .InstanceId')

$ aws ecs delete-cluster --cluster quarkus-ec2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment