MinIO: Connecting Python to MinIO
This documentation is part of the Getting started guide. You can view the complete guide here: How to begin using MinIO for S3-compatible object storage.
👋 Welcome to the Stackhero documentation!
Stackhero offers a ready-to-use MinIO Object Storage platform designed for reliability and speed. The main advantages include:
- Unlimited data transfers with no hidden fees.
- Simple, predictable, and transparent pricing.
- A custom domain name secured with HTTPS (for example, https://object-storage.your-company.com).
- Smooth, one-click updates with no manual intervention required.
- High performance and security on private, dedicated infrastructure.
- Available in both 🇪🇺 Europe and 🇺🇸 USA regions.
Simplify your workflows and save setup time: you can deploy Stackhero's MinIO Object Storage hosting in just 5 minutes.
There are two primary ways to connect Python applications to MinIO.
Connecting to MinIO with the AWS SDK (boto)
First, install the AWS SDK package (boto3):
pip install boto3
pip freeze > requirements.txt
The following example demonstrates how to connect to MinIO using boto3:
#!/usr/bin/env python
import os
import boto3
from botocore.client import Config
s3 = boto3.resource('s3',
endpoint_url='https://<XXXXXX>.stackhero-network.com',
aws_access_key_id='YOUR_ACCESS_KEY',
aws_secret_access_key='YOUR_SECRET_KEY',
config=Config(signature_version='s3v4'),
region_name='us-east-1')
# Upload a local file '/home/john/piano.mp3' to bucket 'songs' with the object name 'piano.mp3'
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')
# Download the object 'piano.mp3' from bucket 'songs' and save it locally as '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')
print("'piano.mp3' downloaded as 'classical.mp3'.")
More details are available in the MinIO Python documentation.
Connecting to MinIO with the MinIO SDK
Alternatively, you can use the MinIO SDK for Python. First, install the MinIO package:
pip install minio
pip freeze > requirements.txt
Below is an example showing how to connect to MinIO using the MinIO SDK:
#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error
def main():
# Create a client for your MinIO server using your access and secret keys
client = Minio(
endpoint='<XXXXXX>.stackhero-network.com:443',
secure=True,
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY'
)
# Check if the bucket 'asiatrip' exists, and create it if it does not
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# Upload '/home/user/Photos/asiaphotos.zip' as 'asiaphotos-2015.zip' to the bucket 'asiatrip'
client.fput_object(
"asiatrip", "asiaphotos-2015.zip", "/home/user/Photos/asiaphotos.zip"
)
print(
"'/home/user/Photos/asiaphotos.zip' has been successfully uploaded as "
"object 'asiaphotos-2015.zip' to bucket 'asiatrip'."
)
if __name__ == "__main__":
try:
main()
except S3Error as exc:
print("An error occurred.", exc)
For further guidance, see the MinIO Python SDK documentation.