awsum
a fun CLI tool for working with AWS infra (cross-platform)
Installation
Required: Go 1.25
Installing from source:
git clone https://github.com/levelshatter/awsum
cd awsum/
go install
Installing via go install:
go install github.com/levelshatter/awsum@latest
Installing via packaged release:
Releases
Configuring
awsum uses the same exact configuration the awscli tool uses (since we use the client library already) to keep environments less messy.
If you have awscli installed & configured, you are already good to go!
If not, then you can do the following:
awsum configure
These commands create a basic configuration for your awsum and potential future awscli installations.
Usage
All AWS operations triggered by AWS service clients created by awsum are logged to files in a awsum directory created in the ~/.aws directory.
~/.aws/awsum/awsum-global-aws-log-output for a record of all operations done by executions of awsum.
~/.aws/awsum/awsum-session-aws-log-output-YYYY-MM-DD__HH-mm-SS for operations grouped by individual executions of awsum.
To get a description of awsum and how to use its commands and sub-commands:
awsum --help
(Example) To get help with commands and sub-commands:
awsum instance --help
Real-World Examples
Get a list of all instances in csv:
awsum instance list --format csv
Sequentially open a secure shell (SSH) to every instance with a name matching "worker":
awsum instance shell --name "worker"
Get the free disk space of every ec2 instance with a name matching "website" over SSH:
awsum instance shell --name website "df -h"
Basic app deployment w/ load-balancing (Amazon Linux example):
Note: awsum does not modify any non-related resources to prevent breaking existing infrastructure.
Note 2: This is actually an exact replica of the demo deployment done by awsum (on two t2.nano instances) NGINX Demo.
# basic deployment
awsum instance shell --name demo "sudo yum install docker -y"
awsum instance shell --name demo "sudo service docker start"
awsum instance shell --name demo "sudo usermod -aG docker ec2-user"
awsum instance shell --name demo "docker rm nginx --force"
awsum instance shell --name demo "docker run -d -p 80:80 --name nginx nginxdemos/hello"
# load balancing - load balance an http service running on port 80 on instances matching the name "demo" using https with an ACM cert
awsum instance load-balance --service "nginx-demo" --name demo --port 443:80 --protocol https:http --certificate "levelshatter.com"
awsum really shines when used in CI/CD processes.