A modern Windows desktop application for browsing and downloading files from AWS S3 buckets with an intuitive GUI.
This project is not affiliated with or endorsed by Amazon Web Services, Inc. (AWS). It is an independent application developed for educational and personal use. Use at your own risk.
- Secure Credential Input: Enter AWS credentials securely with masked secret key input
- S3 Bucket Browsing: View all files in your S3 bucket with file sizes and modification dates
- Prefix Filtering: Filter files by prefix to narrow down your search
- Multi-file Selection: Select individual files or use Select All/Deselect All functionality
- Flexible Downloads:
- Download individual files to a chosen directory
- Download multiple files as a compressed ZIP archive
- Error Handling: Comprehensive error handling for AWS connectivity and credential issues
- Modern UI: Clean, intuitive interface with logo branding and clickable footer links
- Modular Architecture: Well-structured package design for maintainability and extensibility
- Python 3.7 or higher
- AWS S3 credentials (Access Key, Secret Key)
- Internet connection
- Optional: Pillow (PIL) for PNG logo support
- Clone or download this repository
- Install dependencies:
pip install -r requirements.txt
Option 1: Using the main entry point
python main.pyOption 2: Running as a module
python -m s3duckyOption 3: Legacy method (deprecated)
python s3_bucket_viewer.pyAutomated build (recommended):
python build.pyWindows batch script:
build.batManual PyInstaller command:
pyinstaller --onefile --windowed --name=S3Ducky --icon=asset/logo.png --add-data=asset;asset main.pyThe executable will be created in the dist folder as S3Ducky.exe.
- Enter your AWS Access Key
- Enter your AWS Secret Key (masked for security)
- Specify the AWS Region (defaults to us-east-1)
- Enter the S3 Bucket Name
- Optionally specify a Resource prefix to filter files
- Click "Connect" to validate credentials and connect to S3
- View all files in the connected S3 bucket
- Use checkboxes to select files for download
- Use "Select All" or "Deselect All" for bulk operations
- Choose download option:
- Download Selected: Downloads files individually to a chosen folder
- Download as Zip: Creates a ZIP archive of selected files
- Use "← Back to Credentials" to return to the first page
- Credentials are only stored in memory during the session
- Secret keys are masked in the input field
- No credentials are saved to disk
The application handles various error scenarios:
- Invalid AWS credentials
- Non-existent S3 buckets
- Network connectivity issues
- Access permission problems
- File download failures
This project is licensed under the MIT License - see the LICENSE.txt file for details.
- boto3: AWS SDK for Python
- tkinter: GUI framework (included with Python)
- zipfile: Archive creation (included with Python)
- threading: Background operations (included with Python)
- Windows 7 or higher
- Python 3.7+
- Minimum 100MB free disk space
- Internet connection for AWS S3 access
S3Ducky follows a modular package structure for better maintainability:
s3ducky/
├── __init__.py # Package initialization
├── __main__.py # Module entry point
├── app.py # Main application controller
├── core/ # Core business logic
│ ├── s3_client.py # S3 connection and operations
│ └── file_manager.py # File download management
├── gui/ # User interface components
│ ├── main_window.py # Main window manager
│ ├── credentials_page.py # Credentials input page
│ ├── file_browser.py # File browsing page
│ └── footer.py # Footer component
└── utils/ # Utility functions
├── formatters.py # Data formatting utilities
└── image_utils.py # Image and icon utilities
For detailed information about the package structure, see PACKAGE_STRUCTURE.md.