jungle makes AWS operations from terminal simpler and more intuitive.
awscli is by far the most comprehensive CLI tool manipulating various AWS services, and I really like its flexible options and up-to-date release cycle. However, day-to-day AWS operations from my terminal don't need that much flexibility and that many services. Rather, I wanted just small set of UNIX-like commands which are easy to use and remember.
pip install jungle
I would highly recommend to use ssh-agent
to manage your ssh keys and pass phrases. If you ssh-add
your keys, ssh-agent
automatically select appropriate key when you try to login to a box. This makes it much easier to use jungle ec2 ssh
, or ssh
command in general, since you don't have to specify --key-file /path/to/key.pem
for each EC2 instance.
Listing all EC2 instances (each attribute is separated by a tab)
jungle ec2 ls
Listing all EC2 instances in formatted output(each attribute is separated with space and is aligned)
jungle ec2 ls -l
Filtering EC2 instances by Name tag
jungle ec2 ls blog-web-server-01
Filtering EC2 instances by Name tag using wildcard
jungle ec2 ls '*web*'
Starting instance
jungle ec2 up -i i-xxxxxx
Stopping instance
jungle ec2 down -i i-xxxxxx
SSH login to instance specified by instance id
jungle ec2 ssh -i i-xxxxxx --key-file /path/to/key.pem --port 1234
SSH login to instance specified by Tag Name
jungle ec2 ssh -n blog-web-server-01 --key-file /path/to/key.pem
SSH login to instance specified by Tag Name with wildcard (you'll be prompted to choose which server to log in)
jungle ec2 ssh -n 'blog-web-server-*' --key-file /path/to/key.pem
SSH login to instance specified by Tag Name through gateway instance
jungle ec2 ssh -n blog-web-server-01 --key-file /path/to/key.pem -g i-xxxxxx
SSH login to instance specified by Tag Name using auto ssh key discovery
jungle ec2 ssh -n blog-web-server-01
SSH login to instance gateway instance, specifying username for each instance, while disabling known_hosts prompt.
jungle ec2 ssh -i i-xxxxxx -u ec2-user -k /path/to/key.pem -s "-o UserKnownHostsFile=/dev/null" -g i-xxxxxx -x core
--dry-run
gives you ssh command and exits.
jungle ec2 ssh -n blog-web-server-01 -u ec2-user --dry-run
ssh xxx.xxx.xxx.xxx@ec2-user
-P/--profile-name
specify AWS profile name.
jungle ec2 -P myprofile ssh -n blog-web-server-01 -u ec2-user
Listing all ELB instances
jungle elb ls
Listing a ELB instance
jungle elb ls production-blog-elb
Listing ELB attached EC2 instances
jungle elb ls -l production-blog-elb
jungle emr ls
jungle emr ssh -k /path/to/key.pem -i j-xxxxxxx
jungle emr rm -i j-xxxxxxx
jungle asg ls
jungle rds ls
Execuging the following command prints bash autocompletion script. Copy and past or redirect to your favorite file (e.g. /etc/bash_completion.d/jungle
, ~/.bashrc
). This is a function of click, which internally used by jungle
.
$ _JUNGLE_COMPLETE=source jungle
You can create the credential file yourself. By default, its location is at ~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
You may also want to set a default region. This can be done in the configuration file. By default, its location is at ~/.aws/config
[default]
region = us-east-1
More detailed configurations can be found in the boto3 documentation.