`rake uploads:migrate_to_s3` falha com `Aws::S3::Errors::SignatureDoesNotMatch`

Ao fazer upload de arquivos locais para o DigitalOcean Spaces (S3) com rake uploads:migrate_to_s3, o processo inicia e migra alguns arquivos, mas falha repentinamente em um arquivo com o erro Aws::S3::Errors::SignatureDoesNotMatch.

Quando este arquivo é carregado manualmente usando o script mencionado em Extend S3 configuration for other S3 API compatible services - #4 by rishabh e o script é executado novamente, mais arquivos são carregados, mas ele falha novamente em outro arquivo.

Alguém da equipe poderia dar uma olhada nisso? Tenho quase 50 GB de arquivos que preciso mover do armazenamento local para o S3 em breve (a configuração e o upload de novos arquivos funcionam sem problemas).

Ficaria feliz mesmo que fosse apenas uma solução alternativa por enquanto: examinei o código to_s3_migration.rb e consigo identificar os arquivos problemáticos, mas ao carregá-los no S3 usando Aws::S3::Resource do script mencionado acima, os metadados do arquivo desaparecem e o nome original do arquivo é perdido ao fazer o download.

Pesquisas na web retornam muitos problemas relacionados ao SignatureDoesNotMatch: um deles menciona que a versão do algoritmo de assinatura que a gem está usando pode estar incorreta, mas isso está além da minha capacidade atual de verificar.

Esta é a configuração para o 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

Acontece que o DO Spaces não gosta de espaços consecutivos nos metadados do arquivo e falha com um erro completamente não relacionado. Talvez valha a pena verificar se o AWS S3 tem a mesma restrição.

De qualquer forma, a correção rápida foi consolidar múltiplos espaços em um:

              %Q{attachment; filename="#{upload.original_filename.gsub(/\s+/, ' ')}"}

Esta é uma emenda oficial? E quanto a outros erros na migração para o S3?