Moodle数据迁移至Amazon S3后如何通过moodle-tool_objectfs插件访问存储文件
Moodle objectfs插件全量走S3存储配置指南
权限与迁移正确性校验
- 首先确认S3桶的访问权限配置正确:给绑定Moodle的IAM账号/角色开放
s3:GetObject、s3:PutObject、s3:ListBucket三类基础权限,不需要给桶开公共读权限,插件会自动生成带有效期的签名访问链接 - 确认文件迁移是通过插件官方命令完成:不要手动将本地filedir目录的文件直接上传到S3,必须执行插件自带的迁移脚本
php admin/tool/objectfs/cli/migrate_files.php,手动上传的文件路径和插件的哈希命名规则不匹配会导致文件无法读取
插件核心配置调整
- 文件系统类型选择对象存储文件系统,不要使用默认文件系统或混合文件系统:混合模式会将新上传的文件优先存储在本地,满足大小/时间阈值后才同步到S3,不符合全量走S3的需求
- 开启「直接从S3提供文件」开关,关闭本地文件缓存选项:避免Moodle服务器先把S3文件拉回本地再返回给用户,完全实现访问链路走S3
- S3访问配置部分确认区域、桶名、密钥信息填写正确,路径风格选择虚拟主机风格,新AWS区域已经不再支持路径风格的S3访问
缓存清理生效操作
- 所有配置修改完成后,执行Moodle全局缓存清理命令
php admin/cli/purge_caches.php,清空所有缓存的资源访问链接 - 进入站点后台「外观」-「主题设置」页面,手动清理主题缓存,站点logo这类主题静态资源的链接默认会存在主题缓存中,不清缓存会继续读取本地文件路径
效果验证
- 访问站点首页,右键查看站点logo的访问链接,域名应为S3桶域名而非Moodle站点域名
- 打开课程内的PDF资源,访问链接的域名同样为S3桶域名,请求不会经过Moodle站点的pluginfile.php接口
内容的提问来源于stack exchange,提问作者Prabhakaran
相关产品推荐
相关产品推荐

