Project

swa

0.0
A long-lived project that still receives updates
AWS, backwards
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Project Readme

SWA

SWA is AWS, backwards.

It's an alternative CLI for AWS.

"Backwards" because it puts verbs at the end:

$ swa ec2 instance i-9336f049 terminate

rather than the front:

$ aws ec2 terminate-instances --instance-ids i-9336f049

Listing things

SWA provides sub-commands for listing many types of AWS resource, e.g.

$ swa ec2 instances

Listing commands typically provide options for refining the search:

$ swa ec2 instances --tagged purpose=QA --filter availability-zone=ap-southeast-2b

By default you'll get a "summary" view, one line per resource:

$ swa ec2 instances | head
i-bcf48c2b  ami-1e73737d  c3.large   running     10.47.5.16    
i-1990d85c  ami-538e7330  t2.micro   running     10.47.7.25    "blarg/room-service"
i-f9e6ea27  ami-8bfd7eb1  t2.small   running     10.47.11.54   "blarg/match-feed"
i-19155e5c  ami-d5327ab6  c3.large   running     10.47.6.238   "fnord-snarfer"
i-26357e63  ami-eded7ed7  t2.micro   running     10.47.6.96    "fnord-dashboard"
i-b85f6c87  ami-695a7253  c3.xlarge  running     10.47.5.252   "bam-boozle"
i-5627e187  ami-d9d779ba  c4.2xlarge running     10.47.11.201  "pub-batch-42"
i-ced5ae59  ami-eded7ed7  t2.micro   running     10.47.6.22    "atlas-hugged"
i-63e722b2  ami-8bfd7eb1  t2.small   running     10.47.8.95    "blarg/first-service"

But you can ask for all the data, if you wish:

$ swa ec2 instances data
---
- InstanceId: i-bcf48c2b
  ImageId: ami-1e73537d
  State:
    Code: 16
    Name: running
  PrivateDnsName: ip-10-48-9-16.ap-southeast-2.compute.internal
  PublicDnsName: ''
  ...

Specify -J if you like JSON better than YAML.

You can specify a JMESPath to extract a subset of the data:

$ swa ec2 instances data '[].{Id:InstanceId,Profile:IamInstanceProfile.Id}'
---
- Id: i-7f5495ae
  Profile: AIPAIDOQKT66MFXRO5BPS
- Id: i-9c539e4d
  Profile: AIPAIRT5GOEJ2ZMVPGGD6
- Id: i-fbeda3be
  Profile: AIPAIZXZFLTUW6L456LFU

Inspecting things

Each "collection" operation has a corresponding "item" operation, e.g.

$ swa ec2 instance i-bcf48c2b ...

Different resource-types support different sub-commands, but they all implement data, which again dumps everything in YAML or JSON format.

$ swa ec2 instance i-bcf48c2b data

The "item" sub-command can be ommitted, when it can be inferred from the resource-id:

$ swa ec2 i-bcf48c2b data
$ swa ec2 ami-1e73737d data

Installing it

SWA is packaged as a Ruby gem, and can be installed with:

gem install swa

On a Mac, I recommend brew-gem for easy system-wide installation:

brew install brew-gem
brew gem install swa

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/mdub/swa.

License

The gem is available as open source under the terms of the MIT License.