Skip to main content
https://travis-ci.org/mayfieldrobotics/thr33p.svg https://coveralls.io/repos/mayfieldrobotics/thr33p/badge.svg

Authenticating HTTP proxy for S3. Similar to these:

which might be better for you.

quickstart

Create your config(s):

$ cat > ~/.thr33p/config.py <<EOF
import certifi

http_pool_manager = {
   'cert_reqs': 'CERT_REQUIRED',
   'ca_certs': certifi.where(),
}

buckets =  {
   r'~.+-at-bernies': {
      'creds': {
         'access_key_id': 'EXAMPLE',
         'secret_access_key': 'EXAMPLEKEY',
      },
   }
}
EOF
$ cat > ~/.thr33p/gunicorn.py <<EOF
import os

workers = 1

backlog = 1024

worker_class = 'gevent'

loglevel = 'info'

proc_name = 'thr33p'

def post_fork(server, worker):
    import thr33p

    config_path = os.path.abspath(os.path.join(__file__, '..', 'config.py'))
    thr33p.init(config_path)

EOF

and run it with docker:

$ sudo docker run -p 5000:8000 -v $HOME/.thr33p/:/etc/thr33p/ mayfieldrobotics/thr33p:latest --config=/etc/thr33p/gunicorn.py
$ curl http://127.0.0.1:5000/dead-1.jpeg --header "Host:weekend-at-bernies.s3.amazonaws.com" -vvv

or ghetto dev style:

$ mkvirtualenv thr33p
(thr33p)$ pip install thr33p
(thr33p)$ thr33p -d -p 5000 ~/.thr33p/config.py &
(thr33p)$ curl http://127.0.0.1:5000/dead-1.jpeg --header "Host:weekend-at-bernies.s3.amazonaws.com" -vvv

config

Just a python file like e.g. this:

import os

import certifi


# passed to `urllib3.PoolManager`
http_pool_manager = {
   'cert_reqs': 'CERT_REQUIRED',
   'ca_certs': certifi.where(),
}

buckets =  {
   # authenticates buckets matching literal "wake-at-bernies" using temporary iam-role creds
   r'wake-at-bernies': {
      'creds': None
   }

   # authenticates buckets matching literal "evening-at-bernies" using env creds
   r'evening-at-bernies': {
      'creds': {
         'access_key_id': os.environ['AWS_ACCESS_KEY_ID'],
         'secret_access_key':os.environ['AWS_SECRET_ACCESS_KEY'],
      }
   }

   # authenticates buckets matching regex ".+-at-bernies" using baked creds
   r'~.+-at-bernies': {
      'creds': {
         'access_key_id': 'EXAMPLE',
         'secret_access_key': 'EXAMPLEKEY',
      },
   }
}

dev

Get it:

$ git clone git@github.com:mayfieldrobotics/thr33p.git
$ cd thr33p
$ pip install -e .[tests]

test it:

$ py.test tests/ --cov thr33p.py

and build docker images:

$ sudo docker build -t {your-account}/thr33p .

release

All is well:

$ py.test tests/ --cov thr33p.py

so update __version__ in:

  • thr33p.py

tag it (travis will publish it to pypi):

$ git commit -am "release v{version}"
$ git tag -a v{version} -m "release v{version}"
$ git push --tags

and register the tag with docker so others can just:

$ sudo docker pull mayfieldrobotics/thr33p:{version}

Metadata

Release files for thr33p 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thr33p 0.2.0
File Size Uploaded
thr33p-0.2.0.tar.gz 3.3 kB Details

Release files / thr33p-0.2.0.tar.gz

Download URL thr33p-0.2.0.tar.gz
Size 3.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2970f150b30e5b51e6a71c6674affb0a3b05018e84605ef51a74a7988cb8c477
BLAKE2b-256 checksum
How to use checksums
40def06bc4fbf999fe9e4da6fd41392a67137c694b1dd744cd963a164806b496
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page