如何自定义宝塔亚马逊S3云存储插件的端点 | Mayx的博客
Author: mayx
Description: 会点Python就可以自己改插件啦！
Date: 2022-12-12T00:00:00+08:00

12 December 2022 - 字数统计：1174 - 阅读大约需要4分钟 - Hits: Loading...

# 如何自定义宝塔亚马逊S3云存储插件的端点

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章主要讲述了作者如何自定义宝塔面板上的亚马逊S3云存储插件，因为原插件不支持非AWS的S3服务端点，如Filebase。作者发现通过Python的boto3库可以实现自定义连接，只需要在插件的`build_auth()`方法中添加`endpoint_url`参数。作者对宝塔插件的设计和功能表示不满，认为它只支持了基本功能且依赖臃肿，但对于不会编程的小白用户来说，尽管功能有限，仍需使用。

- 起因
- 插件的使用与修改
- 感想

会点Python就可以自己改插件啦！

#
起因

上次用Koyeb安装了宝塔面板之后在上面写了些测试用的网站，不过因为我开发网站的时候喜欢直接在面板上面改，本地基本上都是没代码备份的，不过最近宝塔面板好像有不少关于漏洞的传言，为了避免由于各种奇怪的事情把我的网站搞没，我想整点备份用的插件。

#
插件的使用与修改

宝塔面板的插件还是挺多的，想要备份的话支持的平台也挺多的，而且都很人性化，功能啥的小白也能操作的来。不过考虑到宝塔面板的不安全性，我也不希望我常用的网盘挂在上面当备份，万一被攻破了我网盘上的文件就被别人拿走了。

综合考虑下来，什么OSS还是什么云盘感觉还是不太好选择，但是S3 API兼容的平台还挺多的，比如我之前用过的4EVERLAND也有存储桶。另外之前随便逛的时候注册了一个Filebase也支持（都是0门槛免费5GB）。所以想用这个存我的备份文件。

不过宝塔面板上带的亚马逊S3云存储插件只能用亚马逊的云服务，不能改endpoint……但是我也不想注册AWS，除了看着难受，不人性化，而且好像免费用要绑信用卡？（最主要是我想备份到Filebase， 不然白注册了？😂 ）

所以我就去看了看这个插件的源代码，还好代码是Python的，理解起来倒是不难。最开始我是想着它会不会是直接通过HTTP API访问AWS S3的端点，所以就直接各种搜索，但是找了半天没看到一个和AWS有关的域名……看来投机取巧不太行……就只能慢慢看代码了。最终找了半天发现它好像用的一个叫boto3的库来连接AWS的……这名字起的是真的……我完全没法从这个名字中看出来它和AWS有半毛钱关系（好像因为Boto是亚马逊河豚，据说是粉色的），尤其它代码里是通过`from boto3 import client`这种方式引入的，代码里就没有和boto3有关系的词了……client这个词又很通用，这代码看着是真的难受啊……

不过还好最终起码找到要改的地方了，其实很简单，它的“/www/server/panel/plugin/aws_s3/s3lib/client/aws_s3.py”这个文件是引入的关键，其中`build_auth()`方法是连接S3的关键，我在网上搜了一下boto3，它也是支持自定义端点的，只要在第100行后面加一个endpoint_url参数就可以了，比如Filebase就加一句`endpoint_url="https://s3.filebase.com"`，保存之后其他的就在面板上配置就行了。

#
感想

这下就能看出来宝塔是有多垃圾了吧，明明就一个参数就能搞定的事情，它偏偏不给你加，而且就这样还啥功能都不支持，文件夹也删不了，也没法在面板里上传/下载文件，而且还要给你装个boto3的依赖，啥都不支持还要装个全功能的依赖，实在是太垃圾了。不过小白不会写代码，再垃圾的东西该用还得用吧🤣。

tags: S3 - 插件 查看原始文件

#### 推荐文章

Loading...

上一篇：体验小白也会使用的免费容器云
下一篇：为自己的i2p站点添加一个SSL证书
想问这篇文章
召唤伊斯特瓦尔