你好。我们刚刚从 Discourse EC2 迁移到了 Discourse ECS(容器服务)。在 EC2 阶段,我们尚未配置 S3 上传功能。迁移前,我们将所有图片从 EC2 复制到了 S3 存储桶(已开启公共访问权限)。然而,在启用 S3 上传功能(尚未配置 CDN)完成迁移后,我们发现图片(包括头像)完全无法加载。
app.yml 配置如下:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: aws_access_key
DISCOURSE_S3_SECRET_ACCESS_KEY: aws_secret_key
DISCOURSE_S3_BUCKET: <uploads-bucket>
DISCOURSE_S3_BACKUP_BUCKET: <backups-bucket>
DISCOURSE_BACKUP_LOCATION: s3
hooks:
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
在容器中运行以下命令也未解决问题:
rake posts:rebake
rake posts:missing_uploads
rake avatars:refresh
我们还注意到图片 URL 存在差异(Discourse 仍在使用“EC2 本地上传”的 URL)。
S3 中的链接是:https://[s3-bucket].s3.amazonaws.com/original/1X/831092e27d6c066c3618a587a5c378e1c794f2c6.png
Discourse 中的链接(URL 仍来自 EC2 上传):https://[domain]/uploads/default/original/1X/831092e27d6c066c3618a587a5c378e1c794f2c6.png
浏览器报错:404 NOT FOUND
我们该如何配置 Discourse,使其使用正确的 S3 URL 来加载图片?
