My colleague Peter Moon sent the guest post below to introduce the newest version of the AWS SDK for Python also known as Boto.

— Jeff;

Originally started as a Python client for Amazon S3 by Mitch Garnaat in 2006, Boto has been the primary tool for working with Amazon Web Services for many Python developers and system administrators across the world. Since its inception, Boto has been through an exciting journey of evolution driven by countless contributors from the Python community as well as AWS. It now supports almost 40 AWS services and is downloaded hundreds of thousands of times every week, according to PyPI. Thinking of the journey Boto has been through, I am very excited today to announce the next chapter in its history: the general availability of Boto3, the next major version of Boto.

Libraries must adapt to changes in users’ needs and also to changes in the platforms on which they run. As AWS’s growth accelerated over the years, the speed at which our APIs are updated has also gotten faster. This required us to devise a scalable method to quickly deliver support for multiple API updates every week, and this is why AWS API support in Boto3 is almost completely data-driven. Boto3 has ‘client’ classes that are driven by JSON-formatted API models that describe AWS APIs, so most new service features only require a simple model update. This allows us to deliver support for API changes very quickly, in consistent and reliable manner.

Boto comes with many convenient abstractions that hide explicit HTTP API calls and offer intuitive Python classes for working with AWS resources such as Amazon Elastic Compute Cloud (EC2) instances or Amazon Simple Storage Service (S3) buckets. We formalized this concept in Boto3 and named it Resource APIs, which are also data-driven by resource models that build on top of API models. This architecture allows us to deliver convenient object-oriented abstractions in a scalable manner not just for Boto3, but other AWS SDKs by sharing the same models across languages.

Python 3 had been one of the most frequent feature requests from Boto users until we added support for it in Boto last summer with much help from the community. While working on Boto3, we have kept Python 3 support in laser focus from the get go, and each release we publish is fully tested on Python versions 2.6.5+, 2.7, 3.3, and 3.4. So customers using any of these Python versions can have full confidence that Boto3 will work in their environment.

Lastly, while we encourage all new projects to use Boto3 instead of Boto, and existing projects to migrate to Boto3, we understand migrating existing code base to a new major version can be difficult, time-consuming, or sometimes even nearly impossible. To alleviate the pain, Boto3 has a new top-level module name ( boto3 ), so it can be used side-by-side with your existing code that uses Boto. This makes it easy for customers to start using all new features and API support available in Boto3, even if they’re only making incremental updates to an existing project.

As always, you can find us on GitHub (https://github.com/boto/boto3). We would love to hear any questions or feedback you have in the Issues section of the repository.

To get started, install Boto3 and read the docs!

$ pip install boto3

— Peter Moon, Senior Product Manager, AWS SDKs and Tools