Get started quickly using AWS with boto3, the AWS SDK for Python. Boto3 makes it easy to integrate your Python application, library, or script with AWS services including Amazon S3, Amazon EC2, Amazon DynamoDB, and more.

Resource APIs

Boto3 has two distinct levels of APIs. Client (or "low-level") APIs provide one-to-one mappings to the underlying HTTP API operations. Resource APIs hide explicit network calls but instead provide resource objects and collections to access attributes and perform actions. For example:


for i in ec2.instances.all():

    if i.state['Name'] == 'stopped':


Up-to-date and Consistent Interface

Boto3's 'client' and 'resource' interfaces have dynamically generated classes driven by JSON models that describe AWS APIs. This allows us to provide very fast updates with strong consistency across all supported services.



Support for Python 2 and 3

Boto3 was written from the ground up to provide native support in Python versions 2.7+ and 3.4+.



Boto3 comes with 'waiters', which automatically poll for pre-defined status changes in AWS resources. For example, you can start an Amazon EC2 instance and use a waiter to wait until it reaches the 'running' state, or you can create a new Amazon DynamoDB table and wait until it is available to use. Boto3 has waiters for both client and resource APIs.

Service-specific High-level Features

Boto3 comes with many features that are service-specific, such as automatic multi-part transfers for Amazon S3 and simplified query conditions for Amazon DynamoDB.





Connect with other developers in the Python Community Forum »

Discover more about using Python with AWS in the Python Developer Center »

Learn the details of the latest SDK in the Change Log »

Dig through the source code in the GitHub Repository »

The original Boto (AWS SDK for Python Version 2) can still be installed using pip (pip install boto). The project and its documentation are also available on GitHub and via the AWS SDK for Python Documentation.