4 min read | by Jordi Prats
awstools is a CLI tool that provides a small set of commands to manage the most commonly EC2 resources. It's installation it's not hard since it is a python script that has a list of dependencies on the requirements.txt file, but now it's even easier on Mac since there is a tap available
We can find the homebrew-awstools repository on GitHub, we can use it to install awstools using brew as follows:
$ brew install jordiprats/awstools/awstools ==> Downloading https://github.com/jordiprats/awstools/archive/refs/tags/1.0.tar.gz ==> Downloading from https://codeload.github.com/jordiprats/awstools/tar.gz/refs/tags/1.0 ######################################################################## 100.0% ==> Installing awstools from jordiprats/awstools ==> python3 -m pip install -r requirements.txt ==> mkdir -p ~/awstools ==> sh ./helpers/macinstall.sh /opt/homebrew/Cellar/awstools/1.0 🍺 /opt/homebrew/Cellar/awstools/1.0: 4 files, 98.4KB, built in 8 seconds ==> Running `brew cleanup awstools`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
It will setup an alias (zsh/bash) to run awstools:
$ alias | grep aws alias awstools='python3 /opt/homebrew/Cellar/awstools/1.0/awstools.py'
To configure it, we'll can create the ~/.awstools/config file, where we can define some defaults on it such as the default region or whether it should show the private or public IPs:
[aws] region=us-west-2 useIP=PublicIpAddress
We can find all the different commands online or we can use the --help options:
$ awstools --help Usage: awstools.py [OPTIONS] COMMAND [ARGS]... Options: --profile TEXT AWS profile --region TEXT AWS region --debug set debug mode --help Show this message and exit. Commands: acm ACM related commands ce Cost Explorer related commands ec2 EC2 related commands eks EKS related commands elasticache elasticache related commands iam IAM related commands kms KMS related commands rds RDS related commands route53 Route53 related commands s3 S3 utilities sm SM SecretManager related commands ssm SSM Systems Manager related commands
We can use it on subcommands as well:
$ awstools ec2 --help Usage: awstools.py ec2 [OPTIONS] COMMAND [ARGS]... EC2 related commands Options: --help Show this message and exit. Commands: ami EC2 AMI related commands asg EC2 ASG related commands az list available AZs cpucredits retrieve InstanceCreditSpecifications cssh multiple ssh to EC2 instances by name current-price ebs EC2 EBS related commands import-keypair import a keypair from a public key file instance-tags show instance tags interfaces list ENI per instance lb EC2 Load Balancer related commands list list EC2 running instances nat-gateways list NAT Gateways scp copy data from/to EC2 instance by name search list EC2 running instances sg EC2 SG related commands spot EC2 spot instances ssh ssh to a EC2 instance by name start start EC2 instances by name stop stop EC2 instances by name subnet list subnets terminate terminate EC2 instances by name
We'll find many subcomands, for example, listing EC2 instances:
$ awstools ec2 list k3s-master 32.84.207.220 i-038db699e0f9b6a22 t3a.micro us-west-2d 2022-09-01 06:22:03+00:00 k3s-keypair k3s-master 51.11.46.225 i-059647d687ffb46ac a1.medium us-west-2c 2022-09-01 06:10:08+00:00 k3s-keypair k3s-master 33.163.30.226 i-02232350e1d148101 t3a.micro us-west-2a 2022-09-01 06:24:07+00:00 k3s-keypair
Listing Auto Scaling Groups
$ awstools ec2 asg list AutoScalingGroupName DesiredCapacity MinSize MaxSize InstanceCount k3s_master_asg_arm64_bootstrap 1 1 1 1 k3s_master_asg_x86_64 2 2 2 2
Connecting to an EC2 instance using it's name (or ID):
$ awstools ec2 ssh k3s-master --any Warning: Permanently added '31.11.227.220' (ECDSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ [ec2-user@ip-10-12-202-154 ~]$
Listing current pricing for the EC2 instance types:
$ awstools ec2 current-price t2.2xlarge Instance Type OS Region OnDemand Price effective t2.2xlarge Linux us-west-2 0.3712000000 2022-09-01T00:00:00Z $ awstools ec2 spot current-price t2.2xlarge Instance Type Product Availability Zone Spot Price Last Update t2.2xlarge Linux/UNIX (Amazon VPC) us-west-2a 0.130200 2022-09-19 10:29:20+00:00 t2.2xlarge Linux/UNIX (Amazon VPC) us-west-2b 0.138000 2022-09-19 12:03:22+00:00 t2.2xlarge Linux/UNIX (Amazon VPC) us-west-2c 0.133800 2022-09-19 11:55:31+00:00 t2.2xlarge Linux/UNIX (Amazon VPC) us-west-2d - -
Listing KMS keys:
$ awstools kms list 307ec264-68db-40dc-a6a9-88328d867223 Default key that protects my SSM parameters when no other key is defined 8e97cfb5-973b-42d2-a814-82738c803556 Default key that protects my EBS volumes when no other key is defined df71d6f4-bffd-451d-4466-8cfc97a42413 Default key that protects my ACM private keys when no other key is defined
Creating parameters on the parameter store (SSM):
$ awstools ssm set demo value --description "test SSM" 2b7f94d4-d226-48d7-ec42-43051748c17e
Deleting a parameter is just as easy:
$ awstools ssm delete demo HTTP 200 74579543-4dd3-4900-9b21-6b423f8375fe
And many more!
Posted on 20/09/2022