抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

背景

最近在调研一款能管理我的tencent-cos的在线管理端软件,然后调研了很多软件,之前试用过nextcloud发现一般,然后看中了minio,看评测说性能比较好,并且支持S3协议。

在实际使用过程中是使用的docker部署,具体命令如下,对应文档可以点击minio-gateway

1
2
3
4
docker run -p 9000:9000 --name minio-s3 \
-e "MINIO_ACCESS_KEY=access_key" \
-e "MINIO_SECRET_KEY=secret_key" \
minio/minio gateway s3 https://cos.ap-beijing.myqcloud.com

然而在我将信息填入以后,发现始终无法创建,提示:ERROR Unable to initialize gateway backend: Could not parse the specified URI.
然而通过中心搜索并不能寻找到结果,然后使用全英文搜索就找到问题所在了,原因是:tencent-cos的bucket命名是以: bucket名+个人的账号数字为命名方式的,和minio的默认创建桶的方式不一样,所以始终提示该错误。

改造过程

既然问题已经找到,剩下的问题就解决问题了,解决问题一般有两种方案,一般是解决创造问题的人,一种是直接解决,然而通过腾讯云的工单并不能解决问题,直接说是第三方的原因导致的,无法进行修改。
直接解决问题也很简单:

  • 先找到minio的github仓库,然后fork到自己的仓库中,
  • 按文件夹查找cmd->gateway->s3->gateway-s3.go文件
  • 然后找到randString这个方法
  • 修改最后的返回值为:return prefix + string(b[0:30-len(prefix)]) + "-123"
  • 此时问题解决。