Command Line Interface Overview

Firstly install and configure both the AWSCLI and ECSCLI.

For the examples below ecs is the [options] argument after the aws command. It instructs aws to run the command for Elastic Container Services. Any commands that point to a .json configuration file are available on github.

Detailed help for both EC2 (Elastic Compute Cloud) and ECS (Elastic Container Service) can be found at the links below:

You can dump the result if any command to a text file which is useful with the describe commands. Single > will overwrite the file and >> will append. Example:

1
2
C:\> aws ecr list-images --repository-name lexicon-webmvc > output.txt
C:\> aws ecr list-images --repository-name lexicon-webmvc >> output.txt

ECR - Elastic Container Registry

1
aws ecr list-images --repository-name lexicon-webmvc

Task Definitions

Example task definition ARN : arn:aws:ecs:ap-southeast-2:000000000000:task-definition/lexicon-task-definition:3

1
2
3
aws ecs list-task-definitions --region ap-southeast-2 --status INACTIVE

aws ecs describe-task-definition --task-definition TASK-NAME

You CANNOT DELETE task definitions they have to be only deregistered if you no longer want them.

1
aws ecs deregister-task-definition --task-definition TASK-NAME 

Register new from local .json file. If you use an existing name it will create a new revision of the task definition. The name is defined in the .json in the family parameter.

1
aws ecs register-task-definition --cli-input-json file://lexicon-task-definition.json --region ap-southeast-2

VPC - Virtual Private Cloud

1
2
3
aws ec2 describe-vpcs

aws ec2 create-vpc --cidr-block 10.0.0.0/16

The above will create your VPC along with a Route Table, DHCP options set, Network ACLs and Security Groups

EC2 Instance

EC2 (Amazon Elastic Compute Cloud) is the virtual machine running in the cloud, this is a Linux variant running the Amazon Linux AMI 2.0.20190913 x86_64 ECS HVM - where AMI stands for Amazon Machine Images

Terminated instances remain visible after termination (for approximately one hour).

1
2
3
4
5
6
7
8
~ Descibes the virtual machine instance
aws ec2 describe-instances > output.txt

~ Describes an attribute, example `kernel` which would be `KernelId` in the response
aws ec2 describe-instance-attribute --instance-id i-00000000000000000 --attribute kernel --region ap-southeast-2

~ Kill it with fire
aws ec2 terminate-instances --instance-ids i-00000000000000000

To create a launch template

1
2
3
4
5
6
7
8
~ display existing launch templates
aws ec2 describe-launch-templates

~ create new
aws ec2 create-launch-template --launch-template-name TemplateForWebServer --launch-template-data file://create-launch-template.json

~ delete
aws ec2 delete-launch-template --launch-template-id lt-0bcc8aca918ba6ae8

To run instances

1
aws ec2 run-instances --launch-template LaunchTemplateId=lt-0daef39547692deac

Security Groups

This is used to open up ports, example allowing you to connect to SQL from SQL Server Management Studio on port 1433. The example below opens port 80.

1
2
3
aws ec2 describe-security-groups --filters Name=vpc-id,Values=VPC_ID --region ap-southeast-2

aws ec2 authorize-security-group-ingress --group-id SECURIYY_GROUP_ID --protocol tcp --port 80 --cidr 0.0.0.0/0 --region ap-southeast-2

Subnets

1
2
3
4
5
aws ec2 create-subnet --generate-cli-skeleton

aws ec2 create-subnet --vpc-id vpc-VPC_ID --cidr-block 10.0.1.0/24

aws ec2 create-subnet --cli-input-json file://create-subnet-1.json

Clusters

Example cluster ARN: arn:aws:ecs:ap-southeast-2:000000000000:cluster/lexicon-cluster

1
2
3
4
5
6
7
aws ecs list-clusters

aws ecs delete-cluster --cluster CLUSTER_ID

aws ecs describe-clusters --clusters CLUSTER_ID

aws ecs create-cluster --cluster-name lexicon-cluster --tags key=Description,value=lexicon

Service

Start from task definition and keep it running.

1
2
3
4
5
6
aws ecs list-services --cluster lexicon-cluster
aws ecs delete-service --service lexicon-service --cluster lexicon-cluster

~ servicediscovery
aws servicediscovery list-services --filters lexicon
aws servicediscovery delete-service --id srv-cftwloewpccqww3k

Tasks

1
aws ecs run-task --task-definition lexicon-task-definition:6 --cluster lexicon-cluster

Tags

Assign metadata to AWS resources, this is a array of key|value so you can allocate infrastructure resources.

1
aws ecs list-tags-for-resource --resource-arn