`rake uploads:migrate_to_s3` schlägt fehl mit `Aws::S3::Errors::SignatureDoesNotMatch`

Das Hochladen lokaler Dateien in DigitalOcean Spaces (S3) mit rake uploads:migrate_to_s3 startet und migriert einige Dateien, bricht dann jedoch plötzlich bei einer Datei mit dem Fehler Aws::S3::Errors::SignatureDoesNotMatch ab.

Wenn diese Datei manuell mit dem Skript hochgeladen wird, das unter Extend S3 configuration for other S3 API compatible services - #4 by rishabh erwähnt wird, und das Skript erneut ausgeführt wird, werden weitere Dateien hochgeladen, aber es schlägt erneut bei einer anderen Datei fehl.

Könnte bitte jemand vom Team sich das ansehen? Ich habe fast 50 GB Dateien, die ich in naher Zukunft vom lokalen Speicher nach S3 verschieben muss (Konfiguration und Hochladen neuer Dateien funktionieren problemlos).

Ich wäre auch schon mit einem Workaround für den Moment zufrieden: Ich habe mir den Code in to_s3_migration.rb angesehen und kann die problematischen Dateien identifizieren, aber wenn ich sie über Aws::S3::Resource mit dem oben genannten Skript nach S3 hochlade, fehlen die Datei-Metadaten und der ursprüngliche Dateiname geht beim Herunterladen verloren.

Eine Websuche nach „SignatureDoesNotMatch“ liefert zahlreiche Fehlermeldungen: Eine davon erwähnt, dass die Version des Signaturalgorithmus, die das Gem verwendet, möglicherweise falsch ist, aber das liegt außerhalb meiner aktuellen Fähigkeiten, das zu überprüfen.

Hier ist die Konfiguration für 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

Es hat sich herausgestellt, dass DO Spaces keine aufeinanderfolgenden Leerzeichen in den Datei-Metadaten mag und mit einer völlig irrelevanten Fehlermeldung abbricht. Vielleicht lohnt es sich zu prüfen, ob AWS S3 dieselbe Einschränkung hat.

Wie auch immer, die schnelle Lösung bestand darin, mehrere Leerzeichen zu einem zusammenzufassen:

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

Ist dies eine offizielle Änderung? Was ist mit anderen Fehlern bei der Migration zu S3?