An interactive aws cli experience with the help of fzf
Project description
fzf :heart: aws
Note: still under development, may have breaking changes and bugs, use it under caution.
About
fzfaws
is a python utility to interact with aws on the command line through fzf interface. The primary goal of this project
is to enhance the aws command line experience by reducing the number of times to travel between the browser and terminal to search
for aws-cli commands or even aws arn, id etc just for the sake of copy/pasting them for some simple operations.
fzfaws
is still a young project and will continue to develop to support more services. Table below lists some of the high level view of the supported feature, there
are advanced flags for each individual operations. For example, EC2 ssh instance support tunnelling and most S3 operations take --version
flag to operate on versioned objects.
Checkout wiki for detailed commands usage.
Service | Support |
---|---|
EC2 | ssh instance, start instance, stop instance, terminate instance, reboot instance, list instance/vpc related objects information |
S3 | upload files/directories, download files/directories, move objects/directories between buckets, update object attributes, delete objects, generate presign url, list objects/buckets information |
CloudFormation | create stack, update stack, create/execute changeset, detect drift, validate template, delete stack, list stack/resources information |
Coming soon ... | Coming soon ... |
fzfaws
is not developed as a replacement tool for aws-cli
or any alternatives, it should be used in conjunction with them, hence it will not implement solution for all actions.
With that said, feature request are very welcome, I would like to discuss and consider them.
Requirements
System
fzfaws
currently only has support for MacOS and Linux systems. For Windows system support, there will need some work to be done on the
pyfzf module as well as the ssh_instance
module, PR welcome. You could always utilise the docker image of fzfaws
on any system, checkout wiki to consult how to use the image.
It should theoretically support Windows WSL, if you are getting error message please let me know.
Python
fzfaws
require Python version 3.6+ in order to function properly.
Optional dependencies
- aws-cli:
fzfaws
usesaws-cli
to perform s3 sync operations, only required if you want to usefzfaws s3 upload --sync
. - fd: improve local file search speed,
fzfaws
will usefd
overfind
iffd
is installed.
Install
fzfaws
comes with fzf
binary, it doesn't require fzf
to be installed. Main reason is to allow simple download
procedure even on remote instances.
pip3 install fzfaws
Usage
Getting started guide and individual service guide are documented in wiki.
Motivation & Background
fzfaws
started off as a sets of bash scripts that I wrote to simplify the way I start/stop/terminate/ssh my ec2 instances.
I also implemented s3 functionalities afterwards because I want an easier way to search my bucket.
Later on I also decided to cover CloudFormation because I often need to update my IP parameter in some stacks which
I don't want to do it in aws console. Since I was learning Python, I decided to give it a go in Python because it can process YAML and JSON much easier.
You could find the half bash half Python version in this branch.
As the scripts grow, I decided to make a dedicated project and re-write everything in Python. It was a great help for me to understand more about aws and this project definitely took some positive impact (mainly ec2, s3, cloudformation) on my aws certification exams.
It's more of a learning project for me, it is also my first python package and I'm still learning stuff along the way, some code style/implementation might drastically differ from others, I'm trying my best to refactor everything to align.
Leave a star :)
Testing
fzfaws
is fully tested using the unittest module, heavy mocking were implemented to thoroughly test the interaction with aws as well
as the fzf processing. Due to the limited data set on my personal aws account, I couldn't really test how fzfaws
would
perform under extreme data load, please fire up issues if you face any.
Related projects
- aws-fuzzy-finder: A clean and well written project focus on ssh into EC2 instance.
Credit
- credit to fzf.
- credit to boto3.
- credit to aws-fuzzy-finder for it's fzf-binary detection usage.
- credit to this answer for the method to walk s3 folder.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fzfaws-0.1.1.tar.gz
.
File metadata
- Download URL: fzfaws-0.1.1.tar.gz
- Upload date:
- Size: 4.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef9273aa08ac187102d220b8ce81dcffc8a0810b2309383eae9d1752d0db0ec8 |
|
MD5 | b2aacab9fed65b4b9cb4c986f1ad9ba0 |
|
BLAKE2b-256 | ce1b7c6666d15139d72f4637295ce6a503801121717b763e0b9e2ea2e2957360 |
File details
Details for the file fzfaws-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: fzfaws-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 294c93ad6eb9895cb08cc435e91b33adc7bd20d2c49b1e11622372d7454da877 |
|
MD5 | d90b0159b55388a7dd9f59334f710fe4 |
|
BLAKE2b-256 | 708d0d5d27956ca82cb8d1c2e15bd686cfb36bc2afa5f9815d30550a9e4ee731 |