Skip to main content

.

Project description

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}

Project details


Release history Release notifications

This version
History Node

0.2.0

History Node

0.1.0

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
thr33p-0.2.0.tar.gz (3.3 kB) Copy SHA256 hash SHA256 Source None May 11, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page