Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mdub/swa

an alternative CLI for AWS
https://github.com/mdub/swa

Last synced: about 2 months ago
JSON representation

an alternative CLI for AWS

Awesome Lists containing this 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](http://jmespath.org) 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](https://github.com/sportngin/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](http://opensource.org/licenses/MIT).