Convert Figma logo to code with AI

boto logoboto3

AWS SDK for Python

8,942
1,858
8,942
175

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

  1. Creating an S3 bucket:
import boto3

s3 = boto3.resource('s3')
bucket = s3.create_bucket(Bucket='my-bucket-name', CreateBucketConfiguration={
    'LocationConstraint': 'us-west-2'
})
  1. 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']}")
  1. 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

  1. Install boto3:
pip install boto3
  1. Configure AWS credentials:

    • Create an AWS account and obtain access keys
    • Set up credentials file (~/.aws/credentials) or environment variables
  2. 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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

=============================== 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>`__