Skip to main content

Async client for aws services using botocore and aiohttp

Project description

https://travis-ci.org/aio-libs/aiobotocore.svg?branch=master https://codecov.io/gh/aio-libs/aiobotocore/branch/master/graph/badge.svg https://img.shields.io/pypi/v/aiobotocore.svg

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

https://groups.google.com/forum/#!forum/aio-libs

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

This version

0.3.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiobotocore-0.3.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

aiobotocore-0.3.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

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

Hashes for aiobotocore-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e31ef84bde1918b159979f40c582329d197927575910b2b7413b9a6be100d2ad
MD5 b14b1bef1a1bbd6ea3a9b4f82b7a3171
BLAKE2b-256 25a49e0cb1effb558d88d5b3f6fd8d36232e03509b1ea2efb4b8eaea41cd1f1c

See more details on using hashes here.

File details

Details for the file aiobotocore-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aiobotocore-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ff0bbc9d265aec05ac285bf46787b9f3fd0cfb4d58221c5bcbe9823e80922bb
MD5 f569c0e37f2d58bd27cb5fa68015370b
BLAKE2b-256 03a205941f8d2b53c1f26b64121e328bf9e2ed143a2099006320796ce67f88e7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page