Overwrite S3 endpoint using Boto3 configuration file Overwrite S3 endpoint using Boto3 configuration file python python

Overwrite S3 endpoint using Boto3 configuration file


You cannot set host in config file, however you can override it from your code with boto3.

import boto3session = boto3.session.Session()s3_client = session.client(    service_name='s3',    aws_access_key_id='aaa',    aws_secret_access_key='bbb',    endpoint_url='http://localhost',)

Then you can interact as usual.

print(s3_client.list_buckets())


boto3 only reads the signature version for s3 from that config file. You may want to open a feature request, but for now here is how you can address a custom endpoint:

import boto3from botocore.utils import fix_s3_hostresource = boto3.resource(service_name='s3', endpoint_url='http://localhost')resource.meta.client.meta.events.unregister('before-sign.s3', fix_s3_host)

That bit about the meta is important because boto3 automatically changes the endpoint to your_bucket_name.s3.amazonaws.com when it sees fit 1. If you'll be working with both your own host and s3, you may wish to override the functionality rather than removing it altogether.


using boto3 resource:

import boto3# use third party object storages3 = boto3.resource('s3', endpoint_url='https://URL:443',  aws_access_key_id = 'AccessKey',  aws_secret_access_key = 'SecertKey')# Print out bucket namesfor bucket in s3.buckets.all(): print(bucket.name)