https://github.com/goldeneggg/lsec2
List view of AWS EC2 instances
https://github.com/goldeneggg/lsec2
aws-ec2 go
Last synced: 5 months ago
JSON representation
List view of AWS EC2 instances
- Host: GitHub
- URL: https://github.com/goldeneggg/lsec2
- Owner: goldeneggg
- License: mit
- Created: 2016-09-22T15:30:22.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2023-02-14T15:54:25.000Z (over 3 years ago)
- Last Synced: 2025-08-13T18:19:04.740Z (11 months ago)
- Topics: aws-ec2, go
- Language: Go
- Homepage:
- Size: 1.15 MB
- Stars: 22
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# lsec2
[](https://github.com/goldeneggg/lsec2/actions)
[](https://goreportcard.com/report/github.com/goldeneggg/lsec2)
[](https://golangci.com/r/github.com/goldeneggg/lsec2)
[](https://codecov.io/github/goldeneggg/lsec2?branch=master)
[](https://github.com/goldeneggg/lsec2/blob/master/LICENSE)
List view of AWS EC2 instances.
Example as follows.
```sh
$ 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
```sh
$ 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.
```sh
# uninstall old tap version
$ brew uninstall lsec2
$ brew untap goldeneggg/lsec2
# and install new tap version
$ brew install goldeneggg/tap/lsec2
```
### Or `go get`
```sh
$ go get -u github.com/goldeneggg/lsec2
```
### Or direct download
Download from [latest release](https://github.com/goldeneggg/lsec2/releases/latest)
## Configuration
### Create `~/.aws/credentials` file
__If you have already installed [aws\-cli](https://github.com/aws/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
```ini
[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](http://docs.aws.amazon.com/sdk-for-go/api/aws/session/)
### Or Set environment variables
2 variables are required
```sh
$ export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
$ export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
```
### Change runtime profile
Use `--profile` option
```ini
[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
```
```sh
$ lsec2 # use "default" profile
$ lsec2 --profile test # use "test" profile
```
### Use profile with AssumeRole
See https://github.com/goldeneggg/lsec2/pull/21
## Usage
```sh
# 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)
```sh
$ lsec2 --region ap-northeast-1
```
* write `region` key in `~/.aws/config` file
```sh
$ vi ~/.aws/config
```
```ini
[default]
region = ap-northeast-1
```
* set `AWS_REGION` environment
```sh
$ export AWS_REGION=ap-northeast-1
```
Show more information from public AWS documents
* [SDK Configuration — Developer Guide](https://docs.aws.amazon.com/sdk-for-go/v1/developerguide/configuring-sdk.html)
* [Sessions — Developer Guide](http://docs.aws.amazon.com/sdk-for-go/v1/developerguide/sessions.html)
### Filter by tag
```sh
# 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
```sh
# 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](https://github.com/peco/peco) is a very useful interactive filtering tool.
* Example: print instances => select instance => SSH to selected instance
```sh
# 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](https://github.com/goldeneggg/gat) is a file posting tool to various services like `cat` command.
* Example: print instances => share your slack
```sh
# shortcut "lsec2 OPTIONS TAG_FILTERS" => copy this results to your slack channel
$ lsec2 TagName1=tagvalue1 | gat slack
```
## Contribute
Please follow [Contributor's Guide](CONTRIBUTING.md)
## Contact
Bugs: [issues](https://github.com/goldeneggg/lsec2/issues)
## ChangeLog
[CHANGELOG](CHANGELOG.md) file for details.
## License
[LICENSE](LICENSE) file for details.
## Special Thanks
[@sugitak](https://github.com/sugitak)