Minio SDK访问Bucket的策略配置
2022/2/19 6:11:43
本文主要是介绍Minio SDK访问Bucket的策略配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
配置用户来访问 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个入口:
配置policy 来访问Bucket
首先,每个Bucket有3种访问策略可以设置:
- public:不需要access key 和 secret key,可以直接访问
- private:需要 access key 和 secret key 才能访问
- custom:不需要access key 和 secret key,但是只能以符合策略的方式来访问
默认是 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 **操作。
这样,即使没有配置 access key 和 secre key,我们也可以访问 test Bucket 了。
总结
通过配置用户的方式访问,不需要指定具体的 Bucket。
通过配置策略的方式访问,需要配置具体 Bucket 的访问策略。
它们各有自己的应用场景,可以根据实际情况选择一个适合自己的方式。
我用的minio版本是:
$ docker exec minio_minio_1 minio -v minio version RELEASE.2022-02-16T00-35-27Z
这篇关于Minio SDK访问Bucket的策略配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享