Top Related Projects
This repository is for active development of the Azure SDK for Python. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/python/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-python.
Google Cloud Client Library for Python
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API.
Quick Overview
Boto3 is the official Amazon Web Services (AWS) Software Development Kit (SDK) for Python. It allows Python developers to write software that makes use of services like Amazon S3 and Amazon EC2. Boto3 provides an easy-to-use, object-oriented API as well as low-level access to AWS services.
Pros
- Comprehensive coverage of AWS services
- Well-documented and actively maintained
- Supports both high-level object-oriented interfaces and low-level client interfaces
- Integrates seamlessly with other Python libraries and frameworks
Cons
- Learning curve can be steep for beginners
- Documentation can be overwhelming due to the vast number of services covered
- Some advanced features may require additional configuration or dependencies
- Performance can be an issue for high-volume operations without proper optimization
Code Examples
- Creating an S3 bucket:
import boto3
s3 = boto3.resource('s3')
bucket = s3.create_bucket(Bucket='my-bucket-name', CreateBucketConfiguration={
'LocationConstraint': 'us-west-2'
})
- Listing EC2 instances:
import boto3
ec2 = boto3.resource('ec2')
instances = ec2.instances.all()
for instance in instances:
print(f"ID: {instance.id}, State: {instance.state['Name']}")
- Sending a message to an SQS queue:
import boto3
sqs = boto3.resource('sqs')
queue = sqs.get_queue_by_name(QueueName='my-queue')
response = queue.send_message(MessageBody='Hello, World!')
Getting Started
- Install boto3:
pip install boto3
-
Configure AWS credentials:
- Create an AWS account and obtain access keys
- Set up credentials file (
~/.aws/credentials
) or environment variables
-
Basic usage:
import boto3
# Create a client
s3 = boto3.client('s3')
# Use the client to interact with AWS
response = s3.list_buckets()
for bucket in response['Buckets']:
print(f"Bucket Name: {bucket['Name']}")
For more detailed information, refer to the official Boto3 documentation.
Competitor Comparisons
This repository is for active development of the Azure SDK for Python. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/python/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-python.
Pros of azure-sdk-for-python
- More comprehensive coverage of Azure services
- Better integration with Azure-specific features and authentication mechanisms
- More frequent updates and active development
Cons of azure-sdk-for-python
- Steeper learning curve due to its extensive API surface
- Potentially more complex setup and configuration
- Less community-driven development compared to boto3
Code Comparison
azure-sdk-for-python:
from azure.storage.blob import BlobServiceClient
connection_string = "your_connection_string"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
container_client = blob_service_client.get_container_client("your_container_name")
blob_client = container_client.get_blob_client("your_blob_name")
boto3:
import boto3
s3 = boto3.client('s3')
bucket_name = 'your_bucket_name'
object_key = 'your_object_key'
s3.upload_file('local_file_path', bucket_name, object_key)
Both libraries provide Python interfaces for cloud services, but azure-sdk-for-python is tailored specifically for Azure, while boto3 is designed for AWS. The azure-sdk-for-python offers more Azure-specific functionality but may require more setup. boto3 is generally simpler to use for basic AWS operations but lacks Azure-specific features.
Google Cloud Client Library for Python
Pros of google-cloud-python
- More comprehensive coverage of Google Cloud services
- Better integration with Google Cloud-specific features
- Consistent API design across different services
Cons of google-cloud-python
- Steeper learning curve for developers new to Google Cloud
- Less community support compared to boto3
- Potentially slower release cycle for new features
Code Comparison
boto3 (AWS S3 example):
import boto3
s3 = boto3.client('s3')
s3.upload_file('file.txt', 'my-bucket', 'file.txt')
google-cloud-python (Google Cloud Storage example):
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('my-bucket')
blob = bucket.blob('file.txt')
blob.upload_from_filename('file.txt')
Both libraries provide similar functionality for interacting with cloud storage services, but with syntax specific to their respective platforms. boto3 uses a more straightforward approach, while google-cloud-python requires more setup but offers more fine-grained control over the upload process.
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API.
Pros of libcloud
- Multi-cloud support: Works with 60+ cloud providers, not just AWS
- Consistent API across providers, simplifying multi-cloud development
- Lightweight and modular design, allowing for easy customization
Cons of libcloud
- Less comprehensive AWS feature coverage compared to boto3
- Smaller community and fewer resources available
- May require more manual configuration for advanced AWS features
Code Comparison
boto3:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
bucket.upload_file('local-file.txt', 'remote-file.txt')
libcloud:
from libcloud.storage.types import Provider
from libcloud.storage.providers import get_driver
cls = get_driver(Provider.S3)
driver = cls('access_key', 'secret_key')
container = driver.get_container('my-bucket')
driver.upload_object('local-file.txt', container, 'remote-file.txt')
Both libraries provide similar functionality for basic operations, but boto3 offers more AWS-specific features and a more Pythonic interface for AWS services. libcloud's approach is more generic, allowing for easier switching between cloud providers at the cost of some AWS-specific optimizations.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
=============================== Boto3 - The AWS SDK for Python
|Version| |Python| |License|
Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
Python, which allows Python developers to write software that makes use
of services like Amazon S3 and Amazon EC2. You can find the latest, most
up to date, documentation at our doc site
_, including a list of
services that are supported.
Boto3 is maintained and published by Amazon Web Services
_.
Boto (pronounced boh-toh) was named after the fresh water dolphin native to the Amazon river. The name was chosen by the author of the original Boto library, Mitch Garnaat, as a reference to the company.
Notices
On 2023-12-13, support for Python 3.7 ended for Boto3. This follows the
Python Software Foundation end of support <https://peps.python.org/pep-0537/#lifespan>
__
for the runtime which occurred on 2023-06-27.
For more information, see this blog post <https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/>
__.
.. _boto: https://docs.pythonboto.org/
.. _doc site
: https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
.. _Amazon Web Services
: https://aws.amazon.com/what-is-aws/
.. |Python| image:: https://img.shields.io/pypi/pyversions/boto3.svg?style=flat
:target: https://pypi.python.org/pypi/boto3/
:alt: Python Versions
.. |Version| image:: http://img.shields.io/pypi/v/boto3.svg?style=flat
:target: https://pypi.python.org/pypi/boto3/
:alt: Package Version
.. |License| image:: http://img.shields.io/pypi/l/boto3.svg?style=flat
:target: https://github.com/boto/boto3/blob/develop/LICENSE
:alt: License
Getting Started
Assuming that you have a supported version of Python installed, you can first set up your environment with:
.. code-block:: sh
$ python -m venv .venv
...
$ . .venv/bin/activate
Then, you can install boto3 from PyPI with:
.. code-block:: sh
$ python -m pip install boto3
or install from source with:
.. code-block:: sh
$ git clone https://github.com/boto/boto3.git
$ cd boto3
$ python -m pip install -r requirements.txt
$ python -m pip install -e .
Using Boto3
After installing boto3
Next, set up credentials (in e.g. ``~/.aws/credentials``):
.. code-block:: ini
[default]
aws_access_key_id = YOUR_KEY
aws_secret_access_key = YOUR_SECRET
Then, set up a default region (in e.g. ``~/.aws/config``):
.. code-block:: ini
[default]
region=us-east-1
Other credential configuration methods can be found `here <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html>`__
Then, from a Python interpreter:
.. code-block:: python
>>> import boto3
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
print(bucket.name)
Running Tests
~~~~~~~~~~~~~
You can run tests in all supported Python versions using ``tox``. By default,
it will run all of the unit and functional tests, but you can also specify your own
``pytest`` options. Note that this requires that you have all supported
versions of Python installed, otherwise you must pass ``-e`` or run the
``pytest`` command directly:
.. code-block:: sh
$ tox
$ tox -- unit/test_session.py
$ tox -e py26,py33 -- integration/
You can also run individual tests with your default Python version:
.. code-block:: sh
$ pytest tests/unit
Getting Help
------------
We use GitHub issues for tracking bugs and feature requests and have limited
bandwidth to address them. Please use these community resources for getting
help:
* Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
* Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
* If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/boto3/issues/new>`__
Contributing
------------
We value feedback and contributions from our community. Whether it's a bug report, new feature, correction, or additional documentation, we welcome your issues and pull requests. Please read through this `CONTRIBUTING <https://github.com/boto/boto3/blob/develop/CONTRIBUTING.rst>`__ document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your contribution.
Maintenance and Support for SDK Major Versions
----------------------------------------------
Boto3 was made generally available on 06/22/2015 and is currently in the full support phase of the availability life cycle.
For information about maintenance and support for SDK major versions and their underlying dependencies, see the following in the AWS SDKs and Tools Shared Configuration and Credentials Reference Guide:
* `AWS SDKs and Tools Maintenance Policy <https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html>`__
* `AWS SDKs and Tools Version Support Matrix <https://docs.aws.amazon.com/sdkref/latest/guide/version-support-matrix.html>`__
More Resources
--------------
* `NOTICE <https://github.com/boto/boto3/blob/develop/NOTICE>`__
* `Changelog <https://github.com/boto/boto3/blob/develop/CHANGELOG.rst>`__
* `License <https://github.com/boto/boto3/blob/develop/LICENSE>`__
Top Related Projects
This repository is for active development of the Azure SDK for Python. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/python/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-python.
Google Cloud Client Library for Python
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot