The simple module for putting and getting object from Amazon S3 compatible endpoints
Project description
aiohttp-s3-client
The simple module for putting and getting object from Amazon S3 compatible endpoints
Installation
pip install aiohttp-s3-client
Usage
from http import HTTPStatus
from aiohttp import ClientSession
from aiohttp_s3_client import S3Client
async with ClientSession(raise_for_status=True) as session:
client = S3Client(
url="http://s3-url",
session=session,
access_key_id="key-id",
secret_access_key="hackme",
region="us-east-1"
)
# Upload str object to bucket "bucket" and key "str"
async with client.put("bucket/str", "hello, world") as resp:
assert resp.status == HTTPStatus.OK
# Upload bytes object to bucket "bucket" and key "bytes"
resp = await client.put("bucket/bytes", b"hello, world")
assert resp.status == HTTPStatus.OK
# Upload AsyncIterable to bucket "bucket" and key "iterable"
async def gen():
yield b'some bytes'
resp = await client.put("bucket/file", gen())
assert resp.status == HTTPStatus.OK
# Upload file to bucket "bucket" and key "file"
resp = await client.put_file("bucket/file", "/path_to_file")
assert resp.status == HTTPStatus.OK
# Check object exists using bucket+key
resp = await client.head("bucket/key")
assert resp == HTTPStatus.OK
# Get object by bucket+key
resp = await client.get("bucket/key")
data = await resp.read()
# Delete object using bucket+key
resp = await client.delete("bucket/key")
assert resp == HTTPStatus.NO_CONTENT
Bucket may be specified as subdomain or in object name:
client = S3Client(url="http://bucket.your-s3-host", ...)
resp = await client.put("key", gen())
client = S3Client(url="http://your-s3-host", ...)
resp = await client.put("bucket/key", gen())
client = S3Client(url="http://your-s3-host/bucket", ...)
resp = await client.put("key", gen())
Auth may be specified with keywords or in URL:
client = S3Client(url="http://your-s3-host", access_key_id="key_id",
secret_access_key="access_key", ...)
client = S3Client(url="http://key_id:access_key@your-s3-host", ...)
Multipart upload
For uploading large files multipart uploading can be used. It allows you to asynchronously upload multiple parts of a file to S3.
client = S3Client()
await client.put_file_multipart(
"test/bigfile.csv",
headers={
"Content-Type": "text/csv",
},
workers_count=8,
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for aiohttp_s3_client-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23312e55874ae25a3fa08dd5559d85955b3b42d725fa05a197c119666f5b7d66 |
|
MD5 | 88982ba4114bfdaed08e56e5c9fcc78c |
|
BLAKE2b-256 | 3863de73eb4ad8ffda9433b67ef4178be5c8edc40e74798e241933fbc4a5a547 |