重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Minio 是高性能的对象存储服务,基于golang开发的,可以本地部署。
用它来管理自己系统中的上传下载的文件很方便。
成都创新互联公司长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为广饶企业提供专业的成都网站建设、网站制作,广饶网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
通过 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个入口:
首先,每个Bucket有3种访问策略可以设置:
默认是 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