修改aaPanel的AWS S3插件以兼容第三方S3 API对象存储(以 Backblaze B2 为例)

一、 前言

宝塔面板(aaPanel)官方的 “AWS S3” 插件默认只支持亚马逊 S3 服务,并未提供自定义 Endpoint(端点)的选项,这导致我们无法直接使用其他兼容 S3 API 的第三方对象存储服务。

Backblaze 是一家知名的云存储提供商,其 B2 Cloud Storage 产品提供了 S3 兼容 API,并且每月有 10GB 的免费存储额度。这个额度对于中小型网站的日常备份来说绰绰有余。

本文将引导你通过修改插件的源代码,使其支持 Backblaze B2,从而实现免费、可靠的异地备份。

二、准备工作:获取 Backblaze B2 凭证

在修改插件之前,你需要先从 Backblaze B2 获取必要的配置信息:

  1. Endpoint URL: 在 B2 创建一个存储桶(Bucket)后,在 “Buckets” 页面找到你的桶,点击桶名,即可看到 S3 Endpoint 地址,例如 s3.us-west-004.backblazeb2.com
  2. Bucket Name: 你创建的存储桶的名称。
  3. Key ID 和 Application Key: 前往 “Account” -> “App Keys” 页面,生成一个新的 Application Key。请务必记下生成的 keyIDapplicationKey

三、 核心步骤:修改插件文件

1.定位文件
使用宝塔面板的文件管理器或 SSH 登录服务器,找到插件的配置文件。路径为:
/www/server/panel/plugin/aws_s3/s3lib/client/aws_s3.py

2.修改代码(建议先备份原文件)
打开 aws_s3.py 文件,搜索定位到 def build_auth(self): 这个方法。在 aws_secret_access_key=self.__secret_key, 这一行(大约在第 101 行)后面,添加一行 endpoint_url 参数,并填入你准备好的 Endpoint URL。

修改前:

session = boto3.session.Session()
client = session.client(
    's3',
    aws_access_key_id=self.__secret_id,
    aws_secret_access_key=self.__secret_key,
    region_name=self.__region
)

修改后(以 B2 us-west为例):

session = boto3.session.Session()
client = session.client(
    's3',
    aws_access_key_id=self.__secret_id,
    aws_secret_access_key=self.__secret_key,
    endpoint_url='https://s3.us-west-004.backblazeb2.com', # <-- 添加此行
    region_name=self.__region
)

3.重启面板
保存文件修改后,在宝塔面板首页或通过 SSH 执行 bt reload 命令来重启面板服务,使修改生效。

四、 配置插件

最后,回到宝塔面板的 AWS S3 插件界面,填写你的 Backblaze B2 信息。对应关系如下:

  • S3密钥ID (secret_id): 填写你的 keyID
  • S3密钥 (secret_key): 填写你的 applicationKey
  • 存储桶名称 (Bucket name): 填写你的 Bucket Name(注意不是 App Key 的名称
  • 存储路径 (Save Path): 在 Bucket 中用于存放备份的目录,例如 backup/
  • 区域 (Region): 由于我们已硬编码了 Endpoint,此项可随意填写或保持默认。

填写完毕后,点击保存。你可以尝试手动执行一次备份任务,检查文件是否成功上传到你的 Backblaze B2 存储桶中,以验证配置是否成功。

Terence
花非花,雾非雾。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注