Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jpetrucciani/bucketstore
A simple library for interacting with Amazon S3.
https://github.com/jpetrucciani/bucketstore
amazon-s3 aws boto boto3 for-humans python s3
Last synced: 23 days ago
JSON representation
A simple library for interacting with Amazon S3.
- Host: GitHub
- URL: https://github.com/jpetrucciani/bucketstore
- Owner: jpetrucciani
- License: mit
- Created: 2017-01-27T03:05:00.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2024-09-04T00:39:11.000Z (2 months ago)
- Last Synced: 2024-09-28T00:16:59.417Z (about 1 month ago)
- Topics: amazon-s3, aws, boto, boto3, for-humans, python, s3
- Language: Python
- Homepage: https://pypi.org/project/bucketstore
- Size: 131 KB
- Stars: 228
- Watchers: 16
- Forks: 21
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![PyPI version](https://badge.fury.io/py/bucketstore.svg)](https://badge.fury.io/py/bucketstore)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
[![Python 3.10+ supported](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/release/python-3100/)**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`,
and `AWS_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
```bash
pip install bucketstore
```## Get (or create) a bucket, easily:
```python
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:
```pycon
>>> bucket# 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()
[, ]# check if a key exists in the bucket
>>> 'foo' in bucket
True# delete keys in the bucket
>>> del bucket['foo2']
{}
```## Interact with S3 keys
```pycon
>>> bucket.key('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('bar
', 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](https://tox.readthedocs.io/en/latest/).
```shell
```
✨🍰✨