MinioのPythonの使用法

サービスの起動についてはあまり説明しません。主なことは、次のminioファイルをダウンロードすることです:https://dl.min.io/server/minio/release/linux-amd64/minio次に、実行可能権限chmod +を追加します。 x minioをクリックし、次の手順に従います。起動するだけです。

サービス開始

[root@master packages]# export MINIO_ACCESS_KEY=minio_access
[root@master packages]# export MINIO_SECRET_KEY=minio_secret
[root@master packages]# ./minio server /data
Endpoint:  http://192.168.128.139:9000  http://127.0.0.1:9000    
AccessKey: minio_access 
SecretKey: minio_secret 

Browser Access:
   http://192.168.128.139:9000  http://127.0.0.1:9000    

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://192.168.128.139:9000 minio_access minio_secret

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide

API: SYSTEM()
Time: 11:22:05 CST 12/18/2020
DeploymentID: d1a40163-64fb-4b0b-a7f0-f4d6660b856a
Error: Not Implemented (cmd.NotImplemented)
       3: cmd/fs-v1.go:1551:cmd.(*FSObjects).HealBucket()
       2: cmd/bucket-metadata-sys.go:442:cmd.(*BucketMetadataSys).concurrentLoad.func1()
       1: pkg/sync/errgroup/errgroup.go:55:errgroup.(*Group).Go.func1()

API: SYSTEM()
Time: 11:22:05 CST 12/18/2020
DeploymentID: d1a40163-64fb-4b0b-a7f0-f4d6660b856a
Error: Not Implemented (cmd.NotImplemented)
       3: cmd/fs-v1.go:1551:cmd.(*FSObjects).HealBucket()
       2: cmd/bucket-metadata-sys.go:442:cmd.(*BucketMetadataSys).concurrentLoad.func1()
       1: pkg/sync/errgroup/errgroup.go:55:errgroup.(*Group).Go.func1()

...

ブラウザアクセス

対応するリンクを開き、アクセスするACCESS_KEYとSECRET_KEYのセットを入力すると、バケットを追加してファイルを自分でアップロードできます。

ファイルをアップロードする

公式の例は普通にアクセスできますが、自分で作ったサービスにアクセスしたいですよね?

# my-testfile

hello world

初挑戦

# minio_client.py

from minio import Minio
from minio.error import InvalidResponseError

minioClient = Minio('192.168.128.139:9000',
                 access_key='minio_access',
                 secret_key='minio_secret',
                 )

import os
# Put a file with default content-type, upon success prints the etag identifier computed by server.
try:
    with open('my-testfile', 'rb') as file_data:
        file_stat = os.stat('my-testfile')
        print(minioClient.put_object('mybucket', 'myobject',
                               file_data, file_stat.st_size))
except InvalidResponseError as err:
    print(err)
C:\Users\lukaiyi\AppData\Local\Programs\Python\Python36\python.exe C:/python_learning/minio_client.py
Traceback (most recent call last):
  File "C:\Users\lukaiyi\AppData\Local\Programs\Python\Python36\lib\site-packages\urllib3\connectionpool.py", line 706, in urlopen
    chunked=chunked,

...

  File "C:\Users\lukaiyi\AppData\Local\Programs\Python\Python36\lib\site-packages\urllib3\util\retry.py", line 573, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='192.168.128.139', port=9000): Max retries exceeded with url: /mybucket?location= (Caused by SSLError(SSLError(1, '[SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:749)'),))

エラーが報告されました。私が最終的に見つけた理由は、デフォルトで必要なセキュリティが比較的高いため、secure = Falseをリセットするだけです。

2回目の試行

ファイルをバケットにアップロードするときは、最初にバケットを作成することを忘れないでください。そうしないと、バケットが存在しないというエラーが報告されます。

# minio_client.py

from minio import Minio
from minio.error import InvalidResponseError

minioClient = Minio('192.168.128.139:9000',
                 access_key='minio_access',
                 secret_key='minio_secret',
                 secure=False
                 )

minioClient.make_bucket("mybucket", location="us-east-1")

import os
# Put a file with default content-type, upon success prints the etag identifier computed by server.
try:
    with open('my-testfile', 'rb') as file_data:
        file_stat = os.stat('my-testfile')
        print(minioClient.put_object('mybucket', 'myobject',
                               file_data, file_stat.st_size))
except InvalidResponseError as err:
    print(err)

それをチェックしてください、それは確かにアップロードされました。

ダウンロードファイル

from minio import Minio
from minio.error import InvalidResponseError

minioClient = Minio('192.168.128.139:9000',
                 access_key='minio_access',
                 secret_key='minio_secret',
                 secure=False
                 )

try:
    data = minioClient.get_object('mybucket', 'myobject')
    print(data.read())
except InvalidResponseError as err:
    print(err)
C:\Users\lukaiyi\AppData\Local\Programs\Python\Python36\python.exe C:/python_learning/minio_client.py
b'hello world\n'

Process finished with exit code 0

ご覧のとおり、今アップロードしたファイルは正常にダウンロードできます。

おすすめ

転載: blog.csdn.net/TomorrowAndTuture/article/details/111355963