LoginSignup
5
4

More than 3 years have passed since last update.

minioを署名付きURL(pre-signed URL)で使う

Last updated at Posted at 2021-06-20

概要

署名付きURLを発行してそれを使ってオブジェクトをアップロードする。
署名付きURLを使うことでクレデンシャルを開示しなくても利用者にminioを使ってもらえる。

前提

  • minioは構築済み
  • minioのアクセスキーやシークレットキーは知っている
  • testb という名前でバケットは作成済み
  • 以下のコマンドminioのpythonSDK と requests はインストール済み
    pip3 install minio
    pip3 install requests

署名付きURLを発行する

from minio import Minio
import requests
import datetime

url = "minioのサーバのIPとかドメイン名とか" # e.g. 192.168.1.10:9000, minio.tmksanchi.work:9000
presign_client = Minio(
    url, access_key="minioのaccessキー", secret_key="minioのsecretキー", secure=False
)  # httpsの場合はsecure=Falseは不要。指定しないとTrue。

# 署名付きURLを発行する
presign_url = presign_client.presigned_put_object(
    "testb", "scshot.png",
    datetime.timedelta(minutes=10)
) # 引数はバケット名, アップロードするファイル名, 署名付きURLの有効期限

print("---")
print(presign_url)
print("---")

標準出力に署名付きURLが出力されるのでコピーしとく。

署名付きURLを使ってアップロードする

file = {"upload_file": open("./scshot.png", "rb")}  # ここで違うファイルを指定する事もできるけど、URL発行時に指定したファイル名でアップロードされる
requests.put("署名付きURL", files=file) 

もし、curlでやるなら以下な感じ

curl -X PUT --upload-file ./アップロードするファイル "署名付きURL"

getはどーするの?

presigned_put_object の putの部分を get にするとget用のURLが発行できる。
参考になるコードはここ

参考になるドキュメント

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4