官方文檔地址:http://docs.minio.org.cn/docs/master/python-client-quickstart-guide
MinIO Python Client SDK提供簡單的API來訪問任何與Amazon S3兼容的對象存儲服務。
最低要求
Python 2.7或更高版本
使用pip安裝
pip install minio
初始化MinIO Client
MinIO client需要以下4個參數來連接MinIO對象存儲服務。
| 參數 | 描述 |
|---|---|
| endpoint | 對象存儲服務的URL。 |
| access_key | Access key是唯一標識你的賬戶的用戶ID。 |
| secret_key | Secret key是你賬戶的密碼。 |
| secure | true代表使用HTTPS。 |
from minio import Minio
from minio.error import ResponseError
minioClient = Minio('play.min.io',
access_key='Q3AM3UQ867SPQQA43P2F',
secret_key='zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
secure=True)
示例-文件上傳
本示例連接到一個MinIO對象存儲服務,創建一個存儲桶並上傳一個文件到存儲桶中。
我們在本示例中使用運行在 https://play.min.io 上的MinIO服務,你可以用這個服務來開發和測試。示例中的訪問憑據是公開的。
# 引入MinIO包。
from minio import Minio
from minio.error import (ResponseError, BucketAlreadyOwnedByYou,
BucketAlreadyExists)
# 使用endpoint、access key和secret key來初始化minioClient對象。
minioClient = Minio('play.min.io',
access_key='Q3AM3UQ867SPQQA43P2F',
secret_key='zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
secure=True)
# 調用make_bucket來創建一個存儲桶。
try:
minioClient.make_bucket("maylogs", location="us-east-1")
except BucketAlreadyOwnedByYou as err:
pass
except BucketAlreadyExists as err:
pass
except ResponseError as err:
raise
else:
try:
minioClient.fput_object('maylogs', 'pumaserver_debug.log', '/tmp/pumaserver_debug.log')
except ResponseError as err:
print(err)
實際操作演示 (使用自簽名證書,https://192.168.20.102:9000)
from minio import Minio
from minio.error import S3Error
import urllib3
httpClient = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs='./certs/public.crt')
# public.crt為自定義的簽名證書
def main():
client = Minio(
"192.168.20.102:9000",
access_key="admin",
secret_key="12345678",
secure=True, # 默認為True,表示地址用的是https
http_client=httpClient # 定制http_clinet,加載上自簽名證書,否則會報證書驗證錯誤
)
# 判斷存儲桶asiatrip是否存在,不存在則創建
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# 往上一步的存儲桶里上傳證書文件
client.fput_object(
"asiatrip", "public.crt", "./certs/public.crt",
)
print(
"'public.crt' is successfully uploaded as "
"object 'public.crt' to bucket 'asiatrip'."
)
if __name__ == "__main__":
try:
main()
except S3Error as exc:
print("error occurred.", exc)
實際操作演示 (不使用證書,http://192.168.20.102:9000)
from minio import Minio
from minio.error import S3Error
def main():
client = Minio(
"192.168.20.102:9000",
access_key="admin",
secret_key="12345678",
secure=False # 默認為True,表示地址用的是https
)
# 判斷存儲桶asiatrip是否存在,不存在則創建
found = client.bucket_exists("asiatrip")
if not found:
client.make_bucket("asiatrip")
else:
print("Bucket 'asiatrip' already exists")
# 往上一步的存儲桶里上傳證書文件
client.fput_object(
"asiatrip", "public.crt", "./certs/public.crt",
)
print(
"'public.crt' is successfully uploaded as "
"object 'public.crt' to bucket 'asiatrip'."
)
if __name__ == "__main__":
try:
main()
except S3Error as exc:
print("error occurred.", exc)
