一、结论
SaaS平台存储租户附件要实现弹性扩容,核心是接入兼容S3协议的对象存储服务,提前准备好Endpoint、AccessKey、SecretKey、Bucket、Region等核心配置信息,在SaaS系统的存储配置模块完成对接后,即可实现存储资源按需扩容,无需提前预留硬件容量,也不用手动处理底层存储节点的扩展操作。
二、准备工作
操作前需要提前准备好以下内容,避免对接过程中出现中断:
- SaaS平台的超级管理员权限,可进入后台修改存储配置
- 兼容S3协议的对象存储服务账号
- 对应业务需求的存储桶Bucket,提前规划好权限(公共读/私有读等)
- 对象存储服务提供的Endpoint访问地址
- 对应账号的AccessKey访问密钥ID
- 与AccessKey配对的SecretKey访问密钥字符串
- 存储桶对应的Region地域标识
- 若SaaS平台无原生S3存储支持,需提前下载安装对应的S3存储适配插件
- 租户附件的分类规则、存量附件的迁移方案
- 测试用的不同类型附件(图片、文档、大文件、视频等)
三、操作步骤
每一步操作明确动作和预期结果,避免出错:
1. 规划存储路径规则:可按租户ID、附件类型、业务场景设置存储路径前缀,比如租户公开附件存/public/{租户ID}/,私密附件存/private/{租户ID}/,完成后得到清晰的路径规则,方便后续权限管控和文件检索。
2. 创建存储桶:登录对象存储服务控制台,创建对应存储桶,按业务需求配置访问权限、版本控制、防盗链等规则,完成后存储桶状态为正常可用,权限配置符合业务安全要求。
3. 获取S3接入配置:在对象存储控制台找到对应存储桶的S3接入信息,复制Endpoint、AccessKey、SecretKey、Bucket名称、Region等参数,妥善保存避免泄露,完成后得到完整的对接所需参数。
4. 进入SaaS平台配置页面:登录SaaS平台后台,找到存储配置、第三方存储或S3兼容存储的配置入口,无原生支持的先安装启用对应S3插件,完成后进入配置填写页面。
5. 填写配置参数:按照页面提示依次填入之前获取的Endpoint、AccessKey、SecretKey、Bucket、Region等信息,有路径前缀选项的按之前规划的规则填写,完成后所有配置项填写无误,无缺漏。
6. 测试连接:保存配置后点击测试连接按钮,等待系统验证与对象存储服务的连通性,完成后页面提示连接成功,确认SaaS平台可正常调用对象存储的接口。
7. 验证功能:使用测试租户账号上传不同类型的附件,确认上传成功、访问正常、下载速度符合预期,私密附件的签名校验逻辑正常,完成后全流程功能验证通过。
8. 迁移存量附件:使用对象存储服务提供的批量迁移工具或脚本,将原本存放在SaaS本地服务器的存量租户附件批量上传到对象存储,同步修改数据库中存量附件的访问前缀,完成后全量租户附件都切换到对象存储存储,本地存储可逐步下线。
四、常见错误
整理了对接过程中最容易出现的6类问题及解决建议:
1. Endpoint填写错误:常见为手动输入时多写了前缀、后缀,或者选择了和存储桶地域不匹配的Endpoint,解决建议是直接从对象存储控制台复制对应存储桶的官方Endpoint,不要手动输入,同时注意区分内网和外网地址。
2. 密钥错误:AccessKey或SecretKey填写错误、带了多余空格,或者使用了已经过期、被禁用的密钥,解决建议是重新生成新的密钥,复制时注意清空前后空格,密钥仅告知核心管理员,避免泄露。
3. Bucket不匹配:Bucket名称拼写错误、大小写不符,或者当前使用的AccessKey没有对应存储桶的读写权限,解决建议是核对存储桶的准确名称,在对象存储控制台的权限策略中给当前密钥配置存储桶的读写权限。
4. 上传失败:存储桶设置了禁止公共写、SaaS平台的服务器IP没有加入存储桶的IP白名单,或者存储桶的容量/上传限制小于业务需求,解决建议是调整存储桶的权限策略,将SaaS平台的出口IP加入白名单,按需调整单文件上传大小限制。
5. 访问403:上传成功但附件访问链接提示无权限,常见为存储桶没有开公共读权限、防盗链设置禁止了SaaS平台的域名访问,解决建议是调整存储桶的访问权限,将SaaS平台的业务域名加入防盗链白名单。
6. 大文件上传失败:超过100M的大文件上传中断,是因为SaaS平台没有开启S3分片上传配置,解决建议是在SaaS平台的S3存储配置中开启分片上传,设置合理的分片大小。
五、示例说明
以下是SaaS平台对接S3对象存储的通用配置示例,所有参数替换为自己的实际信息即可:
> SaaS平台S3存储配置示例
> - Endpoint:填写对象存储服务官方提供的对应存储桶访问地址,注意区分内网/外网地址
> - AccessKey:填写对象存储账号生成的访问密钥ID
> - SecretKey:填写与AccessKey配对的访问密钥字符串
> - Bucket:填写提前创建好的用于存储租户附件的存储桶名称
> - Region:按照对象存储服务要求填写对应存储桶的地域标识,部分客户端无该项可留空
> - 路径前缀:可选,填写如tenant_attach/,用于统一存放租户附件,和其他存储资源隔离
> - 存储类型:选择标准存储即可,低频存储适合不常访问的存量归档附件
> - 访问域名:可选,填写绑定到存储桶的自定义域名,用于附件加速分发
六、更简单的方案
如果不想自己搭建部署MinIO、Ceph这类自建对象存储集群,也不想花精力维护存储服务器、处理扩容故障、做跨地域数据备份,完全可以选择成熟的公有云兼容S3协议的对象存储服务,不用提前采购硬件,存储容量按需使用弹性扩容,也不用手动处理节点扩容的操作,服务商自动完成底层资源调度。如果你需要一个兼容S3协议、适合程序接入、租户附件存储、下载分发的对象存储服务,可以了解 七彩云对象存储,支持不限流量下载分发,接入门槛低,适合SaaS平台这类需要灵活扩容的业务场景。
七、FAQ
1. SaaS平台接入对象存储后,租户上传的附件会占用SaaS平台本身的服务器带宽吗?
不会,租户上传的附件会直接传输到对象存储服务,用户访问的时候也是直接访问对象存储的分发节点,不会占用SaaS平台的服务器带宽和存储容量,能大幅降低SaaS平台的服务器压力和带宽成本。
2. 接入对象存储后,原来已经存在SaaS平台本地服务器的租户附件怎么办?
可以通过对象存储服务提供的迁移工具、批量上传脚本,把本地存量的附件批量上传到对象存储中,同时在SaaS平台的数据库中批量替换附件的访问前缀,替换完成后就可以删除本地的附件文件,释放本地存储空间,操作前建议先备份存量数据避免丢失。
3. 不同租户的附件存在同一个存储桶里会不会有安全问题?
可以通过路径前缀区分不同租户的附件,比如每个租户的附件都存在/tenant/{租户ID}/目录下,同时给租户的私密附件访问链接加签名校验,只有持有有效签名的用户才能访问,对安全要求更高的业务也可以按租户创建独立的存储桶实现资源完全隔离,根据自身业务安全需求选择即可。
4. 弹性扩容需要手动操作吗?会不会出现容量不够用的情况?
公有云对象存储的容量是弹性无上限的,不需要手动申请扩容,只要你的业务有需求,上传多少文件都可以,按照实际使用的存储容量付费即可,不会出现存储容量不足的情况。
八、总结
整体操作流程可以概括为准备S3接入配置、在SaaS平台完成配置填写和测试、验证附件上传访问功能、迁移存量附件四个核心环节,整个对接过程通常1-2小时就可以完成,不需要修改大量业务代码。这种接入方式适合各类SaaS平台的租户附件、用户头像、内容图片、视频课程、安装包等资源的存储场景,不仅能实现存储资源的按需弹性扩容,还能降低本地服务器的存储和带宽成本,提升附件的访问速度和稳定性,无需投入精力维护底层存储基础设施。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网