MinIO: PythonをMinIOに接続する

このドキュメントははじめにガイドの一部です。完全なガイドはこちらからご覧いただけます:S3互換のオブジェクトストレージとしてMinIOを使い始める方法

👋 Stackheroドキュメントへようこそ!

Stackheroは、信頼性と高速性を重視した、すぐに使えるMinIO Object Storageプラットフォームを提供しています。主な特長は以下の通りです:

  • 無制限のデータ転送。隠れたコストは一切ありません。
  • シンプルで予測しやすく、透明性のある料金体系
  • HTTPSで保護されたカスタムドメイン名(例:https://object-storage.your-company.com)。
  • ワンクリックでシームレスなアップデート。手動での作業は不要です。
  • プライベートかつ専用インフラ上での高いパフォーマンスセキュリティ
  • 🇪🇺 ヨーロッパおよび🇺🇸 USAリージョンで利用可能。

ワークフローを効率化し、セットアップ時間を短縮:StackheroのMinIO Object Storageホスティングは、わずか5分でデプロイできます。

PythonアプリケーションをMinIOに接続する主な方法は2つあります。

まず、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ドキュメントで確認できます。

また、Python用のMinIO SDKを使用することもできます。まず、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ドキュメントを参照してください。