Awless
A Mighty CLI for AWS
Install / Use
/learn @wallix/AwlessREADME
<img src="https://user-images.githubusercontent.com/808274/33351381-5b9a0d00-d458-11e7-91ed-cf7ada7237c1.png" alt="terminal icon" width="48"> awless is a powerful, innovative and small surface command line interface (CLI) to manage Amazon Web Services.
Why awless
awless stands out by having the following characteristics:
- small and hierarchical set of commands
- a simple/powerful text templating language to create and revert fully-fledged infrastructures
- wrapping/composing AWS API calls when necessary to enrich behaviour. Ex: ensure smart defaults, security best practices, etc.
- local log of all your cloud modifications done through
awlessto list/revert past actions - sync to a local graph storage of your cloud representation
- exploration of your cloud infrastructure and resources interrelations, even offline using the local graph storage
- clearer and flexible terminal output's with: numerous formats (machine/human friendly), enriched resources's properties/relations when feasible
- connect easily using awless' smart SSH to your private & public instances
For more read our FAQ below (how awless compares to other tools, etc.)
Install
Choose one of the following options:
- On macOS, use homebrew:
brew tap wallix/awless; brew install awless - With
curl(macOS/Linux), run:curl https://raw.githubusercontent.com/wallix/awless/master/getawless.sh | bash - Download the latest
awlessbinaries (Windows/Linux/macOS) from Github - If you have Golang already installed, install from the source with:
go get -u github.com/wallix/awless
If you have previously used the AWS CLI or aws-shell, you don't need to configure anything! Your config will be automatically loaded (i.e. ~/.aws/{credentials,config}) and awless will prompt for any missing info (more at our getting started).
Main features
<p align="center"> <a href="https://raw.githubusercontent.com/wiki/wallix/awless/apng/awless-demo.png"><img src="https://raw.githubusercontent.com/wiki/wallix/awless/apng/awless-demo.png" alt="video of a few awless commands"></a> <br/> <em>Note that the video above is in <a href="https://en.wikipedia.org/wiki/APNG">APNG</a> and requires a recent browser.</em> </p>-
Aliasing of resources through their natural name so you don't have to always use cryptic ids that are impossible to remember
-
awless show: Explore the properties, relations, dependencies of a specific resource (even offline thanks to the sync) given only a name (or id/arn).$ awless show jsmith --local -
awless list: Clear and easy listing of multi-region cloud resources (subnets, instances, users, buckets, records, etc.) on AWS EC2, IAM, S3, RDS, AutoScaling, SNS, SQS, Route53, CloudWatch, CloudFormation, Lambda, etc. Listing filters via resources properties or resources tags.$ awless list instances --sort uptime --local $ awless list users --format csv --columns name,created $ awless list volumes --filter state=use --filter type=gp2 $ awless list volumes --tag-value Purchased $ awless ls vpcs --tag-key Dept --tag-key Internal --format tsv $ awless ls instances --tag Env=Production,Dept=Marketing $ awless ls instances --filter state=running,type=micro --format json $ awless ls s3objects --filter bucket=pdf-bucket -r us-west-2 $ ... (see awless ls -h) -
awless run: Create, update and delete complex infrastructures with smart defaults and sound auto-complete through awless templates.$ awless run ~/templates/my-infra.aws $ awless run https://raw.githubusercontent.com/wallix/awless-templates/master/linux_bastion.aws etc. -
Hundreds of powerful CRUD CLI one-liners integrated in the awless templating engine:
$ awless create instance -h $ awless create vpc -h $ awless attach policy -h $ ... (see awless -h) -
awless log: Detailled and easy reporting of all the CLI template executions -
awless revert: Revert of executed templates and resources creation -
Create instances straight from a distro name. No need to know the region or AMI ;) (free tier community bare distro only, see
awless create instance -h)$ awless create instance distro=debian $ awless create instance distro=coreos $ awless create instance distro=redhat::7.2 type=t2.micro $ awless create instance distro=debian:debian:jessie lock=true $ awless create instance distro=amazonlinux:amzn2 etc. -
Leveraging AWS
userdatato provision instance on creation from remote (i.e http) or local scripts:awless create instance ... userdata=/home/john/... -
awless ssh: Clean and simple SSH to public & private instances using only a name$ awless ssh my-production-instance $ awless ssh redis-prod --through jump-server $ awless ssh 34.215.29.221 $ awless ssh db-private --private $ awless ssh 172.31.77.151 --port 2222 --through my-proxy --through-port 23 $ ... (see awless ssh -h) -
awless switch: Switch easily between AWS accounts (i.e. profile) and regions$ awless switch admin eu-west-2 $ awless switch us-west-1 $ awless switch mfa etc. -
awlesstransparently syncs cloud resources locally to a graph representation in order for the CLI to leverage data and their relations in other awless commands and in an offline manner (more on the sync) -
awless sync: Explicit and manual command to fetch & store resources locally. Then query & inspect your cloud offline -
Output listing formats either human (default display is Markdown-compatible tables) or machine readable (csv, tsv, json, ...):
--format -
awless inspect: Leverage experimental and community inspectors which are interface implementation utilities to run analysis on your cloud resources graphs$ awless inspect -i bucket_sizer (see awless inspect -h) -
awless completion: CLI autocompletion for Unix/Linux's bash and zsh
Getting started
Take the tour at Getting Started (wiki) or read the introductory blog post about awless.
More articles:
- Simplified Multi-Factor Authentication for AWS
- Simplified user management for AWS
- InfoWorld: Production-grade deployment of WordPress
- Easy create & tear down of a multi-AZ CockroachDB cluster
- Deploy Vuls.io to an AWS instance and scan for vulnerabilities
Awards
FAQ
Here is a compilation of the question we often answer (thanks for asking them so that we can make things clearer!):
There are already some AWS CLIs. What is awless unique approach?
Three things that differentiates awless from other AWS CLIs:
- It has its own compiled and very simple templating language to build AWS infrastructures.
- Commands are made of VERB + ENTITY [+ param=value] and are actually valid lines of the template language.
- It transparently syncs to a local graph a representation of the cloud resources and their relations.
Leveraging and combining the points above, awless lays some strong foundations for plenty of current/future features/characteristic such as:
- Wrapping AWS API calls to enrich them with before/after behaviour when interacting with the cloud
- Having a small and hierarchical set of commands to intuitively interact with AWS
- Enriching listing of resources using the local model and relations that are not calculated with other CLIs
- Referencing and finding resources quickly avoiding cryptic IDs in favor of names, etc.
- Exposing in the terminal relation between resources: lineage, siblings, etc.
- Performing local analysis of your cloud
- Having a smart SSH to easily connect to instances
- etc.
How do you create infrastructure with awless?
You build infrastructure using template files or command one-liners that get compiled and run through awless builtin engine. See what the templating language looks like. Learn more about the way templates work
Note that all your actions against the cloud are logged. Templates are revertible/rollbackable.
How does awless compares to aws-shell or saws?
(Points above should also help answering this question)
aws-shell and saws are directly mapped to the official AWS CLI. Their only objective is to make you productive and help you manage exhaustively the sheer number of AWS s
