概述
公司魔改的对象存储采用 V2 的签名方式(主要是年久失修),导致很多近两年出现的客户端,包括一些 web browser 类型的客户端都无法使用,也包括 Minio Gateway 类型,本文主要讲的是,如何修改 Minio 的源码,让其支持 V2 的方式,来构建 Minio Browser。
修改
因为最新版取消了 Minio Browser,因此我们的修改是基于比较旧的版本(注意版本),修改签名的方式,然后重新编译打包。
1
2
3
4
5
6
7
8
|
# 只要外网畅通,过程是非常丝滑的
curl -LO https://github.com/minio/minio/archive/refs/tags/RELEASE.2020-09-23T19-18-30Z.zip
unzip RELEASE.2020-09-23T19-18-30Z.zip
cd minio-RELEASE.2020-09-23T19-18-30Z/
# 修改签名方式
vim vendor/github.com/minio/minio-go/v7/pkg/credentials/env_minio.go
# 重新编译的命令
make build
|
注意修改点如下,修改后重新编译得到二进制文件,不管是直接使用还是替换镜像里的二进制即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// Retrieve retrieves the keys from the environment.
func (e *EnvMinio) Retrieve() (Value, error) {
e.retrieved = false
id := os.Getenv("MINIO_ACCESS_KEY")
secret := os.Getenv("MINIO_SECRET_KEY")
// 修改的地方,使用SignatureV2
signerType := SignatureV2
if id == "" || secret == "" {
signerType = SignatureAnonymous
}
e.retrieved = true
return Value{
AccessKeyID: id,
SecretAccessKey: secret,
SignerType: signerType,
}, nil
}
|
更新
今天更新一下文章,
参考资料
- Minio
警告
本文最后更新于 2023年12月2日,文中内容可能已过时,请谨慎参考。