使用 rake uploads:migrate_to_s3 将本地文件上传到 DigitalOcean Spaces (S3) 时,迁移会启动并处理部分文件,随后突然因错误 Aws::S3::Errors::SignatureDoesNotMatch 而针对某个文件失败。
当按照 Extend S3 configuration for other S3 API compatible services - #4 by rishabh 中提到的脚本手动上传该文件并重新运行脚本时,它会继续上传更多文件,但随后又会在另一个文件处失败。
能否请团队中的某人帮忙查看一下?我目前有近 50GB 的文件需要在不久的将来从本地存储迁移到 S3(新文件的配置和上传功能运行正常)。
即使只是一个临时的变通方案我也很感激:我已经查看了 to_s3_migration.rb 代码,能够识别出有问题的文件,但当我使用上述脚本中的 Aws::S3::Resource 将它们上传到 S3 时,文件元数据会丢失,且下载时原始文件名也会丢失。
网络搜索返回了大量关于 SignatureDoesNotMatch 的问题:其中一条提到该 gem 使用的签名算法版本可能不正确,但这超出了我目前的技能范围去验证。
以下是 rake 的配置:
DISCOURSE_S3_ACCESS_KEY_ID="id" \
DISCOURSE_S3_SECRET_ACCESS_KEY="secret" \
DISCOURSE_S3_REGION="sfo2" \
DISCOURSE_S3_BUCKET="mybucket/uploads" \
DISCOURSE_S3_ENDPOINT="https://sfo2.digitaloceanspaces.com" \
DISCOURSE_S3_CDN_URL="https://mybucket.sfo2.cdn.digitaloceanspaces.com" \
rake uploads:migrate_to_s3 --trace