ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Minio SDK访问Bucket的策略配置

2022-02-19 03:00:26  阅读:396  来源: 互联网

标签:endpoint minio Bucket access 访问 key SDK Minio


配置用户来访问 Bucket

Minio 是高性能的对象存储服务,基于golang开发的,可以本地部署。
用它来管理自己系统中的上传下载的文件很方便。

通过 SDK 访问 Minio 服务时,一般先创建 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个入口:
image.png

配置policy 来访问Bucket

首先,每个Bucket有3种访问策略可以设置:

  1. public:不需要access key 和 secret key,可以直接访问
  2. private:需要 access key 和 secret key 才能访问
  3. custom:不需要access key 和 secret key,但是只能以符合策略的方式来访问

image.png

默认是 privite 策略,也就是需要 access key 和 secret key 才能访问。
public 策略允许所有人访问,没有任何访问控制,适合公开的资源。

custom策略就是我们这次尝试的目标。
由于我们没有 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 **操作。
image.png

这样,即使没有配置 access key 和 secre key,我们也可以访问 test Bucket 了。

总结

通过配置用户的方式访问,不需要指定具体的 Bucket。
通过配置策略的方式访问,需要配置具体 Bucket 的访问策略。
它们各有自己的应用场景,可以根据实际情况选择一个适合自己的方式。

我用的minio版本是:

$ docker exec minio_minio_1 minio -v
minio version RELEASE.2022-02-16T00-35-27Z

标签:endpoint,minio,Bucket,access,访问,key,SDK,Minio
来源: https://www.cnblogs.com/wang_yb/p/15911798.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有