CLI tool for sharing files via Amazon S3 with presigned URLs
Project description
aws-s3-share
A command-line tool for compressing files or directories, uploading them to Amazon S3, then generating a pre-signed URL for easy sharing. This is useful for example for uploading/downloading files from EC2 instances without direct connexion to the Internet.
Compressed archives are uploaded with a random 12-characters long prefix to avoid overwriting of files of the same name.
Features
- Compression: .gz for files, tar.gz for directories
- Multipart S3 Upload: Efficient uploads to Amazon S3
- Pre-signed URLs: Generate pre-signed URLs with configurable expiry
- Progress Tracking: Progress bars for compression and upload
- AWS Profile Support: Use AWS profiles for authentication
- OS Independent: Works on Linux, macOS, and Windows
Installation
Using uv (recommended)
uvx aws-s3-share
Using pipx
pipx install aws-s3-share
Using pip
pip install aws-s3-share
Quick Start
Basic Usage
# Upload a file
aws-s3-share --bucket my-bucket myfile.txt
# Upload a directory
aws-s3-share --bucket my-bucket mydirectory/
# Specify expiry time (in seconds)
aws-s3-share --bucket my-bucket --expiry 7200 myfile.txt
# Specify an AWS profile
aws-s3-share --bucket my-bucket --profile myprofile myfile.txt
Configuration
aws-s3-share supports command-line arguments and reading its options from a configuration file (~/.config/aws-s3-share.toml on Linux/macOS, %AppData%\Roaming\aws-s3-share.toml on Windows). Valid configuration file options are bucket, expiry, and profile.
Options are applied in this order of precedence:
- Command-line arguments (highest priority)
- Configuration file options
- Default values (lowest priority, expiry only)
Command-line Options
aws-s3-share [OPTIONS] PATH
Options:
-b, --bucket TEXT S3 bucket to upload to
-e, --expiry INTEGER Pre-signed URL expiry time in seconds (default: 3600)
-p, --profile TEXT AWS profile name to use for authentication
-h, --help Show this message and exit
--version Show the version and exit
AWS Credentials
If neither the command-line argument --profile nor the configuration file option profile is provided, aws-s3-share uses the standard AWS credential chain:
- Environment variables (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - AWS credentials file (
~/.aws/credentials) - IAM roles (when running on EC2)
Required IAM Permissions
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
},
{
"Effect": "Allow",
"Action": [
"s3:CreateMultipartUpload",
"s3:CompleteMultipartUpload",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploads",
"s3:ListParts"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters