Async client for aws services using botocore and aiohttp
Project description
Async client for amazon services using botocore and aiohttp/asyncio.
Main purpose of this library to support amazon s3 api, but other services should work (may be with minor fixes). For now we have tested only upload/download api for s3, other users report that SQS and Dynamo services work also. More tests coming soon.
Install
$ pip install aiobotocore
Basic Example
import asyncio
import aiobotocore
AWS_ACCESS_KEY_ID = "xxx"
AWS_SECRET_ACCESS_KEY = "xxx"
async def go(loop):
bucket = 'dataintake'
filename = 'dummy.bin'
folder = 'aiobotocore'
key = '{}/{}'.format(folder, filename)
session = aiobotocore.get_session(loop=loop)
async with session.create_client('s3', region_name='us-west-2',
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_access_key_id=AWS_ACCESS_KEY_ID) as client:
# upload object to amazon s3
data = b'\x01'*1024
resp = await client.put_object(Bucket=bucket,
Key=key,
Body=data)
print(resp)
# getting s3 object properties of file we just uploaded
resp = await client.get_object_acl(Bucket=bucket, Key=key)
print(resp)
# delete object from s3
resp = await client.delete_object(Bucket=bucket, Key=key)
print(resp)
# list s3 objects using paginator
paginator = client.get_paginator('list_objects')
async for result in paginator.paginate(Bucket=bucket, Prefix=folder):
for c in result.get('Contents', []):
print(c)
# get object from s3
response = await client.get_object(Bucket=bucket, key=key)
# this will ensure the connection is correctly re-used/closed
async with response['Body'] as stream:
bytes = await stream.read()
loop = asyncio.get_event_loop()
loop.run_until_complete(go(loop))
Run Tests
Make sure you have development requirements installed and your amazon key and secret accessible via environment variables:
$ cd aiobotocore $ export AWS_ACCESS_KEY_ID=xxx $ export AWS_SECRET_ACCESS_KEY=xxx $ pip install -Ur requirements-dev.txt
Execute tests suite:
$ py.test -v tests
Mailing List
Requirements
Changes
0.3.0 (2017-04-01)
Added support for aiohttp>=2.0.4(thanks @achimnol)
update botocore requirement to: botocore>=1.5.0, <=1.5.33
0.2.3 (2017-03-22)
update botocore requirement to: botocore>=1.5.0, <1.5.29
0.2.2 (2017-03-07)
set aiobotocore.__all__ for * imports #121 (thanks @graingert)
fix ETag in head_object response #132
0.2.1 (2017-02-01)
Normalize headers and handle redirection by botocore #115 (thanks @Fedorof)
0.2.0 (2017-01-30)
add support for proxies (thanks @jjonek)
remove AioConfig verify_ssl connector_arg as this is handled by the create_client verify param
remove AioConfig limit connector_arg as this is now handled by by the Config max_pool_connections property (note default is 10)
0.1.1 (2017-01-16)
botocore updated to version 1.5.0
0.1.0 (2017-01-12)
Pass timeout to aiohttp.request to enforce read_timeout #86 (thanks @vharitonsky) (bumped up to next semantic version due to read_timeout enabling change)
0.0.6 (2016-11-19)
Added enforcement of plain response #57 (thanks @rymir)
botocore updated to version 1.4.73 #74 (thanks @vas3k)
0.0.5 (2016-06-01)
Initial alpha release
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
File details
Details for the file aiobotocore-0.3.0.tar.gz
.
File metadata
- Download URL: aiobotocore-0.3.0.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e31ef84bde1918b159979f40c582329d197927575910b2b7413b9a6be100d2ad |
|
MD5 | b14b1bef1a1bbd6ea3a9b4f82b7a3171 |
|
BLAKE2b-256 | 25a49e0cb1effb558d88d5b3f6fd8d36232e03509b1ea2efb4b8eaea41cd1f1c |
File details
Details for the file aiobotocore-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: aiobotocore-0.3.0-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ff0bbc9d265aec05ac285bf46787b9f3fd0cfb4d58221c5bcbe9823e80922bb |
|
MD5 | f569c0e37f2d58bd27cb5fa68015370b |
|
BLAKE2b-256 | 03a205941f8d2b53c1f26b64121e328bf9e2ed143a2099006320796ce67f88e7 |