- Notifications
You must be signed in to change notification settings - Fork21
A simple library for interacting with Amazon S3.
License
NotificationsYou must be signed in to change notification settings
jpetrucciani/bucketstore
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
bucketstore is a very simple Amazon S3 client, written in Python. Itaims to be much more straight-forward to use than boto3, and specializesonly in Amazon S3, ignoring the rest of the AWS ecosystem.
- 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!
pip install bucketstore
importbucketstore# Create the bucket if it doesn't exist.bucket=bucketstore.get('bucketstore-playground',create=True)
>>> 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 bucketTrue# delete keys in the bucket>>>del bucket['foo2']{}
>>> 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)>>>withopen('/tmp/test.py','rb')asfile:>>> 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)>>>withopen('/tmp/test.py','wb')asfile:>>> bucket.key('test.py').download(file)# size of key>>> bucket.key('test.py').size()>>>len(bucket.key('test.py'))15
Other methods includebucketstore.login(access_key_id, secret_access_key)
,bucketstore.list()
, andbucketstore.get(bucket_name, create=False)
.
Tests are run throughTox.
✨🍰✨
About
A simple library for interacting with Amazon S3.
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published