MinIO: 将 Python 连接到 MinIO

本文档属于入门指南指南的一部分。您可以在此处查看完整指南:如何开始使用 MinIO 进行 S3 兼容的对象存储

👋 欢迎来到 Stackhero 文档!

Stackhero 提供即用型 MinIO 对象存储 解决方案,具有众多优势,包括:

  • 无限制传输。
  • 简单、可预测且透明的定价
  • 使用 HTTPS 保护的可定制域名(例如,https://object-storage.your-company.com)。
  • 只需点击即可轻松更新
  • 私有和专用 VM提供的最佳性能和强大安全性
  • 🇪🇺 欧洲🇺🇸 美国均可用。

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 MinIO 对象存储托管 解决方案!

有两种主要方法可以将 Python 应用程序连接到 MinIO。

首先,安装 AWS SDK 包 (boto3):

pip install boto3
pip freeze > requirements.txt

以下示例演示如何使用 boto3 连接到 MinIO:

#!/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')

# 上传本地文件 '/home/john/piano.mp3' 到存储桶 'songs',对象名为 'piano.mp3'
s3.Bucket('songs').upload_file('/home/john/piano.mp3', 'piano.mp3')

# 下载存储桶 'songs' 中的对象 'piano.mp3' 并将其本地保存为 '/tmp/classical.mp3'
s3.Bucket('songs').download_file('piano.mp3', '/tmp/classical.mp3')

print("'piano.mp3' downloaded as 'classical.mp3'.")

更多详细信息请参阅 MinIO Python 文档

或者,您可以使用 MinIO SDK for Python。首先,安装 MinIO 包:

pip install minio
pip freeze > requirements.txt

下面是一个示例,展示如何使用 MinIO SDK 连接到 MinIO:

#!/usr/bin/env python
from minio import Minio
from minio.error import S3Error

def main():
  # 使用您的访问和密钥创建 MinIO 服务器的客户端
  client = Minio(
    endpoint='<XXXXXX>.stackhero-network.com:443',
    secure=True,
    access_key='YOUR_ACCESS_KEY',
    secret_key='YOUR_SECRET_KEY'
  )

  # 检查存储桶 'asiatrip' 是否存在,如果不存在则创建
  found = client.bucket_exists("asiatrip")
  if not found:
    client.make_bucket("asiatrip")
  else:
    print("Bucket 'asiatrip' already exists")

  # 上传 '/home/user/Photos/asiaphotos.zip' 为 'asiaphotos-2015.zip' 到存储桶 '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)

有关更多信息,请参阅 MinIO Python SDK 文档