Boto3 Python SDK

Boto3 is the official AWS SDK for Python. It lets you create, update, and configure IONOS Object Storage objects within your Python scripts.

Configuration

  • Install the latest Boto3 release via pip: pip install boto3

There are several ways to provide credentials, such as passing them as parameters to the boto.client() method, via environment variables, or with a generic credential file (~/.aws/credentials). For more information, see Credentials.

Example of passing credentials as parameters when creating a Session object

To get the Access Key and Secret Key, see Generate a Key.

Note:

— Your credentials are not tied to a specific region or bucket.

— For information on the supported IONOS Object Storage service endpoints, see Endpoints.

import boto3
import logging
from botocore.exceptions import ClientError
from botocore.client import Config

config = Config(
   signature_version = 's3v4'
)

s3_client = boto3.client('s3',
                         endpoint_url='https://s3.eu-central-2.ionoscloud.com',
                         aws_access_key_id='YOUR_ACCESS_KEY',
                         aws_secret_access_key='YOUR_SECRET_KEY',
                         config=config)

Example

  • List buckets:

    response = s3_client.list_buckets()
    for bucket in response['Buckets']:
        print(bucket['Name'])
  • Create bucket my-bucket at the region eu-central-1:

    try:
      s3_client.create_bucket(Bucket='my-bucket', CreateBucketConfiguration={'LocationConstraint': 'eu-central-2'})
    except ClientError as e:
            logging.error(e)
  • Upload filename.txt to the bucket my-bucket:

    try:
            s3_client.upload_file(
                Filename='filename.txt',
                Bucket='my-bucket',
                Key='my-prefix/filename.txt')
    except ClientError as e:
            logging.error(e)

    For more information, see AWS SDK documentation on Uploading files.

  • Download the file filename.txt from the my-bucket:

    s3_client.download_file('my-bucket',
                         'filename.txt',
                         '/local_path/filename.txt')
  • List objects of the bucket my-bucket

    response = s3_client.list_objects(Bucket='my-bucket')
    for obj in response['Contents']:
        print(obj['Key'])
  • Copy the filename.txt from the bucket my-source-bucket to the bucket my-dest-bucket and add the prefix uploaded/. We use the resource() method instead of the client() method here. It provides a higher level of abstraction than the low-level calls made by service clients.

    config = Config(
       signature_version = 's3v4'
    )
    
    s3_resource = boto3.resource('s3',
                        endpoint_url='https://s3.eu-central-2.ionoscloud.com',
                        aws_access_key_id='YOUR_ACCESS_KEY',
                        aws_secret_access_key='YOUR_SECRET_KEY',
                        config=config)
    
    copy_source = {
        'Bucket': 'my-source-bucket',
        'Key': 'filename.txt'
    }
    
    bucket = s3_resource.Bucket('my-dest-bucket')
    try: 
            bucket.copy(copy_source, 'uploaded/filename.txt')
    except ClientError as e:
            logging.error(e)   

For more examples, refer to Boto3 Documentation, such as:

For more information on Boto3 and Python, see Realpython.com – Python, Boto3, and AWS S3: Demystified.

Last updated