Description
BucketStore is a very simple Amazon S3 client, written in Python
BucketStore alternatives and similar packages
Based on the "Third-party APIs" category.
Alternatively, view BucketStore alternatives based on common mentions on social networks and blogs.
-
boto
For the latest version of boto, see https://github.com/boto/boto3 -- Python interface to Amazon Web Services -
google-api-python-client
🐍 The official Python client library for Google's discovery based APIs. -
Telethon
Pure Python 3 MTProto API Telegram client library, for bots too! -
PRAW
PRAW, an acronym for "Python Reddit API Wrapper", is a python package that allows for simple access to Reddit's API. -
apache-libcloud
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API. -
twython
Actively maintained, pure Python wrapper for the Twitter API. Supports both normal and streaming Twitter APIs. -
Gordon
λ Gordon is a tool to create, wire and deploy AWS Lambdas using CloudFormation -
facepy
Facepy makes it really easy to use Facebook's Graph API with Python -
hubspot3
python3.6+ hubspot client based on hapipy, but modified to use the newer endpoints and non-legacy python -
Python-Onfleet
A full-featured Python wrapper for the Onfleet API.
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of BucketStore or a related project?
README
BucketStore is a very simple Amazon S3 client, written in Python. It aims to be much more straight-forward to use than boto3, and specializes only in Amazon S3, ignoring the rest of the AWS ecosystem.
Features
- Treats S3 Buckets as Key/Value stores.
- Automatic support for
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
, andAWS_DEFAULT_REGION
environment variables. - Easily make keys (or entire buckets) publically accessable.
- Easily get the public URL for a given key.
- Generates temporary URLs for a given key.
- Use S3 in a pythonic way!
Usage
Installation
$ pip install bucketstore
Get (or create) a bucket, easily:
import bucketstore
# Create the bucket if it doesn't exist.
bucket = bucketstore.get('bucketstore-playground', create=True)
Treat the bucket like a key/value store:
>>> bucket
<S3Bucket name='bucketstore-playground'>
# get/set using array syntax
>>> bucket['foo'] = 'bar'
>>> bucket['foo']
bar
# get/set using methods
>>> bucket.set('foo2', 'bar2')
>>> bucket.get('foo2')
bar2
# list keys
>>> bucket.list()
[u'foo', u'foo2']
# all keys
>>> bucket.all()
[<S3Key name=u'foo' bucket='bucketstore-playground'>, <S3Key name=u'foo2' bucket='bucketstore-playground'>]
# check if a key exists in the bucket
>>> 'foo' in bucket
True
# delete keys in the bucket
>>> del bucket['foo2']
{}
Interact with S3 keys:
>>> bucket.key('foo')
<S3Key bucket='bucketstore-playground' name=u'foo'>
>>> foo = _
>>> foo.set('new value')
# Generate a temporary share URL.
>>> foo.temp_url(duration=1200)
u'https://bucketstore-playground.s3.amazonaws.com/foo?AWSAccessKeyId=AKIAI2RVFNXIW7WS66QQ&Expires=1485493909&Signature=L3gD9avwQZQO1i11dIJXUiZ7Nx8%3D'
# Make key publically accessable.
>>> foo.make_public()
>>> foo.url
'https://s3.amazonaws.com/bucketstore-playground/foo'
# Get / set metadata for key.
>>> foo.meta = {'foo': 'bar'}
>>> foo.meta
{'foo': 'bar}
# Rename key to 'foo3'.
>>> foo.rename('foo3')
# Delete the key.
>>> foo.delete()
# Create a key with a content type
>>> foo = bucket.key('foo.html')
>>> foo.set('<h1>bar</h1>', content_type='text/html')
# upload to key
>>> bucket.key('test.py').upload('/tmp/test.py')
# or upload with a file-like object! (make sure it's open in binary mode)
>>> with open('/tmp/test.py', 'rb') as file:
>>> bucket.key('test.py').upload(file)
# download to file
>>> bucket.key('test.py').download('/tmp/test.py')
# or download to a file-like object! (make sure it's open in binary mode)
>>> with open('/tmp/test.py', 'wb') as file:
>>> bucket.key('test.py').download(file)
# size of key
>>> bucket.key('test.py').size()
>>> len(bucket.key('test.py'))
15
Other methods include bucketstore.login(access_key_id, secret_access_key)
, bucketstore.list()
, and
bucketstore.get(bucket_name, create=False)
.
Tests
Tests are run through Tox.
# Run tests against all environments.
$ tox
# Run against a specific version.
$ tox -e py36
# Run with pytest arguments.
$ tox -- --pdb
✨🍰✨