at-k / lsec2

List view of aws ec2 instances

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lsec2

List view of aws ec2 instances

Build Status GolangCI Go Report Card Codecov MIT License

Install

Using Homebrew for OS X

$ brew install goldeneggg/tap/lsec2

Note:

If you have already installed an old version's lsec2 using brew tap goldenegg/lsec2 command and brew install lsec2 command, please uninstall old version.

# uninstall old tap version
$ brew uninstall lsec2
$ brew untap goldeneggg/lsec2

# and install new tap version
$ brew install goldeneggg/tap/lsec2

Or go get

$ go get -u github.com/goldeneggg/lsec2

Or direct download

Download from latest release

Configuration

Set environment variables

2 variables are required

$ export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
$ export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY

Or create ~/.aws/credentials file

Write your credential information in ~/.aws/credentials file

  • Write a [default] section
  • Write aws_access_key_id in [default] section
  • Write aws_secret_access_key in [default] section
[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

More information: session - Amazon Web Services - Go SDK

Usage

# print all instances info by list view
$ lsec2

Result contains informations of instances as follows

  • instance id
  • private ip address
  • public ip address
  • instance type
  • instance state
  • tags

Show more detail information by typing lsec2 -h

Assign region

You can use 3 patterns

  • assign by --region option (top priority)
$ lsec2 --region ap-northeast-1
  • set AWS_REGION environment
$ export AWS_REGION=ap-northeast-1
  • set AWS_SDK_LOAD_CONFIG environment, and write region key in ~/.aws/config file
$ export AWS_SDK_LOAD_CONFIG=true

$ vi ~/.aws/config
[default]
region = ap-northeast-1

Show more information from public AWS documents

Filter by tag

# filterd by a tag key-value separated by "="
$ lsec2 TagName1=tagvalue1

# filterd by some tags
$ lsec2 TagName1=tagvalue1 TagNameN=tagvalueN

# filterd by a tag multiple values separated by comma
$ lsec2 TagName1=tagvalue11,tagvalue12,tagvalue1N

Options

# with header
$ lsec2 -H

# filter state
$ lsec2 -s running
$ lsec2 -s stopped
$ lsec2 -s OTHER_STATE

# print only private IP address
$ lsec2 -p

# print state with color
# ("running" is green, "stopped" is red, and others are yellow)
$ lsec2 -c

Tips

With peco

peco is a very useful interactive filtering tool.

  • Example: print instances => select instance => SSH to selected instance
# add function to your .bashrc or .bash_profile or other shell dotfile
$ vi YOUR_DOTFILE

lssh () {
  IP=$(lsec2 $@ | peco | awk -F "\t" '{print $2}')
  if [ $? -eq 0 -a "${IP}" != "" ]
  then
      ssh ${IP}
  fi
}


# load dotfile
$ source YOUR_DOTFILE

# shortcut "lsec2 OPTIONS TAG_FILTERS" => "ssh PRIVATE_IP"
$ lssh TagName1=tagvalue1

With gat

gat is a file posting tool to various services like cat command.

  • Example: print instances => share your slack
# shortcut "lsec2 OPTIONS TAG_FILTERS" => copy this results to your slack channel
$ lsec2 TagName1=tagvalue1 | gat slack

Contribute

Please follow Contributor's Guide

Contact

Bugs: issues

ChangeLog

CHANGELOG file for details.

License

LICENSE file for details.

Special Thanks

@sugitak

About

List view of aws ec2 instances

License:MIT License


Languages

Language:Go 65.8%Language:Shell 23.9%Language:Makefile 10.2%