Skip to main content

CLI tool for sharing files via Amazon S3 with presigned URLs

Project description

aws-s3-share

PyPI - Version PyPI - Python Version PyPI - License

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:

  1. Command-line arguments (highest priority)
  2. Configuration file options
  3. 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:

  1. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
  2. AWS credentials file (~/.aws/credentials)
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws_s3_share-0.1.3.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aws_s3_share-0.1.3-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file aws_s3_share-0.1.3.tar.gz.

File metadata

  • Download URL: aws_s3_share-0.1.3.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for aws_s3_share-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2fc0287c2cb539af606419d3fa7a1d690d9e0a886f41a97b4d8300117d73b880
MD5 7dc094bfa6e71cc5fd4d0af9256bbde9
BLAKE2b-256 7d2d93d0ca62aa2c02f03454c6597f9fd19817ef533481638084ffa9cc507bfe

See more details on using hashes here.

File details

Details for the file aws_s3_share-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: aws_s3_share-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for aws_s3_share-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f9c7e987f7a646d5c11f3ac6294669b9424ba9977f24d6624ce94f69d5c19ea4
MD5 d2c337bd6ad5c260a78034f05c54e709
BLAKE2b-256 905a091f0b76934ea16ed8d7f7ba1f315258c6a1b69f5922e163e06aa84c4b85

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page