Skip to content
/ awsf Public

πŸ” Fast fuzzy search for AWS resources - Lambda, S3, SQS, DynamoDB, RDS, Kinesis & API Gateway. DevOps productivity tool powered by fzf.

License

Notifications You must be signed in to change notification settings

asayed18/awsf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AWSF - AWS Fuzzy Finder ☁️

GitHub Stars License: MIT Python 3.6+ PRs Welcome

Ko-fi Buy Me A Coffee GitHub Sponsors

Tired of the slow, clunky AWS Console search? Clicking through multiple pages, waiting for searches to load, and navigating endless menus just to find a Lambda function or S3 bucket?

AWSF is your solution - a lightning-fast, keyboard-driven fuzzy finder that brings all your AWS resources to your fingertips. Search Lambda functions, S3 buckets, SQS queues, DynamoDB tables, RDS instances, Kinesis streams, and API Gateway APIs instantly with fuzzy matching. No more frustration, no more waiting - just type and go.

🎬 Demo

AWSF Demo

Search, filter, and open AWS resources in seconds with an intuitive fuzzy finder interface.

✨ Features

  • πŸ” Fuzzy Search: Lightning-fast fuzzy search across all your AWS resources - no more sluggish console searches
  • 🎯 Service-Specific Search: Target specific AWS services (e.g., lambda payment, s3 media)
  • 🏷️ Environment Detection: Automatically detects and displays environment indicators (PROD, STAGE, DEV)
  • ⚑ Quick Actions:
    • Press Enter to open resource in AWS Console
    • Press Ctrl+C to copy resource URL to clipboard
  • πŸŽ›οΈ Configurable Services: Enable/disable specific AWS services
  • βš™οΈ Multi-Region Support: Configure your preferred AWS region and profile
  • πŸ–₯️ Beautiful Interface: Enhanced fzf interface with preview cards and icons
  • πŸ“± Multiple Access Methods: CLI, GUI integration, keyboard shortcuts

πŸš€ Supported AWS Services

Service Icon Description
Lambda Ξ» Functions, layers
S3 πŸͺ£ Buckets
SQS πŸ“¬ Queues
Kinesis 🌊 Data streams
DynamoDB πŸ—„οΈ Tables
RDS πŸ—ƒοΈ Instances, clusters
API Gateway πŸšͺ REST APIs

πŸ“‹ Prerequisites

  • Python 3.6+
  • AWS CLI configured (aws configure) or environment variables
  • fzf fuzzy finder:
    • macOS: brew install fzf
    • Ubuntu/Debian: sudo apt install fzf
    • Fedora/RHEL: sudo dnf install fzf
    • Arch Linux: sudo pacman -S fzf
  • boto3 Python library (pip install boto3)

πŸ› οΈ Installation

Quick Start

# Clone the repository
git clone https://github.com/asayed18/awsf.git
cd awsf

# Install dependencies
pip install -r requirements.txt

# Configure AWS (if not already done)
aws configure

# Populate your AWS resources
python3 scripts/populate_resources.py

# Start searching!
./awsf

macOS Integration

# Add to your shell profile (bash/zsh/fish)
echo 'alias awsf="/path/to/awsf/awsf"' >> ~/.bashrc

# Or create a symlink
ln -s /path/to/awsf/awsf /usr/local/bin/awsf

# Optional: Create app bundle for Spotlight integration
./scripts/create_macos_app.sh

Linux Integration

# Add to your shell profile
echo 'alias awsf="/path/to/awsf/src/awsf.py"' >> ~/.bashrc

# Or create a symlink
sudo ln -s /path/to/awsf/src/awsf.py /usr/local/bin/awsf

# Optional: Create desktop entry for application menu integration
./scripts/create_linux_desktop.sh

# The script will:
# β€’ Create a .desktop file in ~/.local/share/applications
# β€’ Add AWSF to your application menu
# β€’ Create a launcher in ~/.local/bin/awsf
# β€’ Generate an icon for the app

πŸ“– See Linux Installation Guide for detailed instructions, desktop environment integration, and troubleshooting.

System Integration

# Add to PATH for global access
export PATH="/path/to/awsf:$PATH"

# Reload your shell
source ~/.bashrc  # or ~/.zshrc, ~/.config/fish/config.fish

🎯 Usage

Basic Search

# Interactive mode - search all enabled services
awsf

# Search all services for a term
awsf payment

# Search specific service
awsf lambda auth
awsf s3 media
awsf dynamodb user

Settings and Configuration

# Open settings menu
awsf --settings

# Quick configuration edit
awsf --config

# Get help
awsf --help

Search Examples

# Find Lambda functions with "auth" in the name
awsf lambda auth

# Find S3 buckets containing "media"
awsf s3 media

# Find DynamoDB tables with "user" 
awsf dynamodb user

# Search across all services for "api"
awsf api

βš™οΈ Configuration

AWS Configuration

The tool respects your AWS configuration in the following order:

  1. Environment Variables: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
  2. AWS Profile: Specified in config/config.json or via --profile
  3. Default AWS Credentials: From ~/.aws/credentials

Application Settings

Edit config/config.json:

{
  "aws_region": "us-east-1",
  "aws_profile": "my-profile",
  "console_base_url": "https://console.aws.amazon.com"
}

Service Management

Use the settings menu to enable/disable services:

awsf --settings

Or edit config/settings.json directly:

{
  "enabled_services": [
    "lambda",
    "s3", 
    "sqs",
    "kinesis",
    "dynamodb",
    "rds",
    "apigateway"
  ]
}

πŸ”„ Updating Resources

AWS resources change frequently. Update your local resource cache:

# Manual update
python3 scripts/populate_resources.py

# Update with specific region/profile
python3 scripts/populate_resources.py --region us-west-2 --profile production

# From settings menu
awsf --settings
# Select option 1: "Repopulate resource list"

πŸ” IAM Permissions

Minimum required IAM permissions for resource discovery:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:ListFunctions",
                "s3:ListAllMyBuckets",
                "sqs:ListQueues",
                "kinesis:ListStreams",
                "kinesis:DescribeStream",
                "dynamodb:ListTables",
                "dynamodb:DescribeTable",
                "rds:DescribeDBInstances",
                "rds:DescribeDBClusters",
                "apigateway:GET"
            ],
            "Resource": "*"
        }
    ]
}

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

πŸ’ Show Your Support

AWSF is built with ❀️ for the AWS community. If this tool saves you time and makes your workflow smoother:

  • ⭐ Star this repository - It helps others discover the tool and motivates continued development
  • πŸ› Report issues & ideas - Your feedback shapes the roadmap
  • οΏ½ Contribute code - See our Contributing Guide to get started
  • πŸ’¬ Share your story - Tweet about how AWSF helps your workflow (tag @asayed)
  • β˜• Buy me a coffee - Fuel late-night coding sessions β†’ Ko-fi | Buy Me a Coffee
  • πŸ’Ž Become a sponsor - Support ongoing development β†’ GitHub Sponsors

Every star, issue report, and contribution helps make AWSF better for everyone. Thank you! πŸ™

οΏ½ Security

See SECURITY.md for information about reporting security vulnerabilities.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

⭐ Star History

If you find this tool useful, please consider giving it a star! It helps others discover the project.

πŸ™ Acknowledgments

  • fzf - The amazing fuzzy finder that powers our interface
  • boto3 - AWS SDK for Python

Made with ❀️ for the AWS community

About

πŸ” Fast fuzzy search for AWS resources - Lambda, S3, SQS, DynamoDB, RDS, Kinesis & API Gateway. DevOps productivity tool powered by fzf.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published