Files
open-im-server/internal/api/third/minio_init.go
T

61 lines
2.3 KiB
Go
Raw Normal View History

2022-02-19 18:48:15 +08:00
package apiThird
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/log"
"Open_IM/pkg/utils"
"context"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
url2 "net/url"
)
2022-03-23 15:44:34 +08:00
var (
minioClient *minio.Client
)
2022-03-04 14:27:54 +08:00
func MinioInit() {
2022-04-05 19:31:35 +08:00
operationID := utils.OperationIDGenerator()
2022-04-05 19:48:31 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "minio config: ", config.Config.Credential.Minio)
2022-02-19 18:48:15 +08:00
minioUrl, err := url2.Parse(config.Config.Credential.Minio.Endpoint)
if err != nil {
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error())
2022-02-19 18:48:15 +08:00
return
}
2022-04-05 19:49:49 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio)
2022-03-23 15:44:34 +08:00
minioClient, err = minio.New(minioUrl.Host, &minio.Options{
2022-02-19 18:48:15 +08:00
Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""),
Secure: false,
})
2022-04-05 19:49:49 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "new ok ", config.Config.Credential.Minio)
2022-02-19 18:48:15 +08:00
if err != nil {
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "init minio client failed", err.Error())
2022-02-19 18:48:15 +08:00
return
}
opt := minio.MakeBucketOptions{
Region: config.Config.Credential.Minio.Location,
ObjectLocking: false,
}
err = minioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt)
if err != nil {
2022-04-05 20:06:08 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "MakeBucket failed ", err.Error())
2022-02-19 18:48:15 +08:00
exists, err := minioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket)
if err == nil && exists {
2022-04-05 20:06:08 +08:00
log.NewWarn(operationID, utils.GetSelfFuncName(), "We already own ", config.Config.Credential.Minio.Bucket)
2022-02-19 18:48:15 +08:00
} else {
2022-02-28 17:52:13 +08:00
if err != nil {
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), err.Error())
2022-02-28 17:52:13 +08:00
}
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "create bucket failed and bucket not exists")
2022-02-19 18:48:15 +08:00
return
}
}
2022-03-02 19:07:17 +08:00
// 自动化桶public的代码
2022-02-21 16:41:56 +08:00
//err = minioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite)
//if err != nil {
2022-03-11 17:37:01 +08:00
// log.NewError("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error())
// return
2022-02-21 16:41:56 +08:00
//}
2022-04-05 19:31:35 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "minio create and set policy success")
2022-02-19 18:48:15 +08:00
}