Minio 是高性能的對象存儲服務(wù),基于golang開發(fā)的,可以本地部署。
用它來管理自己系統(tǒng)中的上傳下載的文件很方便。
?
成都創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為廣饒企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,廣饒網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
通過 SDK 訪問 Minio 服務(wù)時,一般先創(chuàng)建 service account,然后通過 access key 和 secret key 來訪問 bucket。
比如:
package main
import (
"log"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func InitMinioClient(endpoint, accessKey, secretKey string) (*minio.Client, error) {
return minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
Secure: false,
})
}
// upload file
func PutFile(mc *minio.Client, bucketname, objectname, fp string) (minio.UploadInfo, error) {
return mc.FPutObject(context.Background(), bucketname, objectname, fp, minio.PutObjectOptions{
ContentType: "application/csv",
})
}
func main() {
endpoint := "your minio endpoint"
accessKey := "Q3AM3UQ867SPQQA43P2F"
secretKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
// Initialize minio client object.
minioClient, err := InitMinioClient(endpoint, accessKey, secretKey)
// 省略錯誤處理 。。。 。。。
PutFile(minioClient, "test", "test.csv", "./xxx.csv")
// 省略錯誤處理 。。。 。。。
}
?
在最新版的minio console中,配置service account 有2個入口:
?
首先,每個Bucket有3種訪問策略可以設(shè)置:
默認(rèn)是 privite 策略,也就是需要 access key 和 secret key 才能訪問。
public 策略允許所有人訪問,沒有任何訪問控制,適合公開的資源。
?
custom策略就是我們這次嘗試的目標(biāo)。
由于我們沒有 access key 和 secret key,上面的代碼可以改成如下這樣:
package main
import (
"log"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func InitMinioClient(endpoint string) (*minio.Client, error) {
return minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4("", "", ""),
Secure: false,
})
}
// upload file
func PutFile(mc *minio.Client, bucketname, objectname, fp string) (minio.UploadInfo, error) {
return mc.FPutObject(context.Background(), bucketname, objectname, fp, minio.PutObjectOptions{
ContentType: "application/csv",
})
}
func main() {
endpoint := "your minio endpoint"
// Initialize minio client object.
minioClient, err := InitMinioClient(endpoint)
// 省略錯誤處理 。。。 。。。
PutFile(minioClient, "test", "test.csv", "./xxx.csv")
// 省略錯誤處理 。。。 。。。
}
同時配置 Bucket 的策略,允許 **PutFile **操作。
這樣,即使沒有配置 access key 和 secre key,我們也可以訪問 test Bucket 了。
通過配置用戶的方式訪問,不需要指定具體的 Bucket。
通過配置策略的方式訪問,需要配置具體 Bucket 的訪問策略。
它們各有自己的應(yīng)用場景,可以根據(jù)實(shí)際情況選擇一個適合自己的方式。
?
我用的minio版本是:
$ docker exec minio_minio_1 minio -v
minio version RELEASE.2022-02-16T00-35-27Z
網(wǎng)站欄目:Minio SDK訪問Bucket的策略配置
網(wǎng)站URL:http://chinadenli.net/article12/dsoisgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、建站公司、服務(wù)器托管、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)