Skip to content
List view of AWS EC2 instances
Go Makefile Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
awsec2
cmd/lsec2
printer
scripts
.codecov.yml
.gitignore
.goreleaser.yml
.travis.yml
CONTRIBUTING.md
LICENSE
Makefile
README.md
go.mod
go.sum

README.md

lsec2

Build Status Go Report Card GolangCI Codecov MIT License

List view of AWS EC2 instances.

Example as follows.

$ lsec2 -H
INSTANCE_ID            PRIVATE_IP         PUBLIC_IP         TYPE        STATE      TAGS
i-0xxxxxxxxxxxxxx1     172.111.111.111    54.111.111.111    t2.micro    running    TagA=ValueA,TagB=ValueB
i-0xxxxxxxxxxxxxx2     172.222.222.222    54.222.222.222    t2.medium   running    TagAA=ValueAA
i-0xxxxxxxxxxxxxx3     172.333.333.333    54.333.333.333    t1.large    stopped

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

Create ~/.aws/credentials file

If you have already installed aws-cli, I recommend setting up by aws configure command.

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

  • Write a section
    • Default is [default]. It's known as "Profile".
  • Write aws_access_key_id in your section
  • Write aws_secret_access_key in your 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

Or 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

Change runtime profile

Use --profile option

[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

[test]
aws_access_key_id = YOUR_ACCESS_KEY_ID2
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY2
$ lsec2  # use "default" profile
$ lsec2 --profile test  # use "test" profile

Use profile with AssumeRole

See https://github.com/goldeneggg/lsec2/pull/21

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
  • write region key in ~/.aws/config file
$ vi ~/.aws/config
[default]
region = ap-northeast-1
  • set AWS_REGION environment
$ export AWS_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

# change column delimiter (default delimiter is TAB)
$ lsec2 -d ,

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

You can’t perform that action at this time.