Wenn Sie die App neu erstellt haben, sind die im Container vorgenommenen Änderungen verloren gegangen. Vielleicht haben die Backblaze-Leute die Dinge repariert, während Sie das getan haben.
Ich habe S3 gerade auskommentiert und neu kompiliert. Ich werde von nun an bei lokalem Speicher bleiben.
Lokaler Speicher funktioniert einwandfrei. Nur das Löschen funktioniert nicht.
Danke für die Veröffentlichung und die Bestätigung, dass es derzeit keine Problemumgehung gibt, ohne die AWS SDKs herabzustufen. Ich bin auf Probleme mit den B2 S3 APIs aus einem anderen Projekt gestoßen, das das Golang AWS SDK verwendet, und versuchte, eine VictoriaMetrics-Datenbank zu sichern.
Haben Sie eine Vorstellung von Ihrem Ingenieurteam, wie oder wann sie dieses Problem lösen könnten, oder gibt es eine Möglichkeit, eine unterstützte Problemumgehung zu verfolgen/Updates zu erhalten? Ich versuche zu entscheiden, ob ich ein Projekt mit einer Abhängigkeitsänderung forken und neu kompilieren soll oder einfach eine Weile auf ein Update warten soll!
Danke!
Das folgende Verfahren hat bei mir funktioniert, um die AWS Gems herunterzustufen:
# Um in den Container zu gelangen:
./launcher enter app
# Anscheinend notwendig, um Gemfile.lock zu entfrosten:
bundle config set frozen false
# Eine ältere Version des sdk-s3 Gem festlegen:
sed -i 's/gem "aws-sdk-s3", require: false/gem "aws-sdk-s3", "1.177.0", require: false/' Gemfile
# Das S3 Gem herabstufen, damit es mit dem übereinstimmt, was jetzt in der Gemfile steht:
bundle update aws-sdk-s3
# Auch das aws-sdk-core Gem herabstufen:
bundle add aws-sdk-core --version 3.215.
Nachdem ich diese Änderungen vorgenommen hatte, konnte ich erfolgreich ein Backup in B2 speichern. Ich bin sicher, dass dies nur eine temporäre Problemumgehung ist, die beim nächsten Discourse-Update verloren geht, daher hoffe ich, dass @PatPatterson und das Backblaze-Team bald eine dauerhaftere Kompatibilitätslösung anbieten können.
Hoffentlich müssen Sie das nicht tun, aber es ist möglich, diesen sed-Befehl in die app.yml einzufügen, damit er beim Neuerstellen automatisch ausgeführt wird. Ich denke, es würde ausreichen, ihn unterhalb der Stelle einzufügen, an der die Plugins geklont werden. Aber es könnte komplizierter sein, als ich denke.
Hallo AntiMetaman,
Ich habe die letzte Woche damit verbracht, Backups mit S3-Speicher zum Laufen zu bringen, und mit diesem Thread hat es endlich funktioniert. Ehrlich gesagt, bin ich mir nicht sicher, welcher Teil funktioniert hat.
Ich habe befolgt, was Sie mit gem uninstall und gem install gemacht haben, aber jetzt erhalte ich beim Hochladen von Bildern eine Fehlermeldung. Mein Fehlerprotokoll zeigt dies:
not entitled /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in 'call' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aw
Bevor ich meinen gesamten Server wegwerfen und neu starten muss (ehrlich gesagt, zu diesem Zeitpunkt bin ich mir nicht einmal sicher, ob ich weitermachen möchte), wissen Sie, wie ich gem uninstall und gem install rückgängig machen kann, damit ich versuchen kann, ob das das Problem behebt?
Das Verhalten, das ich auf unserer Instanz (die Backblaze für Backups verwendet) beobachtet habe, ist, dass die Backups im Februar ohne Benachrichtigung zu scheitern begannen. Ich habe es heute zufällig bemerkt, da ich unsere Backups von Zeit zu Zeit überprüfe. Ich würde dies als ein ziemlich ernstes Problem ansehen.
Wäre es möglich, das AWS-SDK auf eine frühere Version zurückzusetzen, bis eine Lösung für Backblaze und andere nicht-AWS-Anbieter gefunden werden kann?
Aber ich habe es für eine Website getan, die Backblaze verwendet. Ich habe eine Vorlage erstellt, die ich in /root/aws-revert-template.yml mit Folgendem abgelegt habe:
# Diese Vorlage setzt aws-sdk-s3 auf eine Version zurück, die mit Backblaze funktioniert
params:
home: /var/www/discourse
hooks:
after_bundle_exec:
- exec:
cd: $home
cmd:
- bundle config set frozen false
- "sed -i 's/gem \\\"aws-sdk-s3\\\", require: false/gem \\\"aws-sdk-s3\\\", \\\"1.177.0\\\", require: false/' Gemfile"
- bundle update aws-sdk-s3
- bundle add aws-sdk-core --version 3.215
Und dann habe ich es wie folgt zu meiner app.yml hinzugefügt:
# WICHTIG: Legen Sie ein geheimes Passwort in Postgres für den Discourse-Benutzer fest
# TODO: Ändern Sie SOME_SECRET in dieser Vorlage
templates:
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
- "/root/aws-revert-template.yml"
Und ich habe ein Upgrade auf Stable durchgeführt und es scheint zu funktionieren.
Sie könnten auch einfach das hinzufügen, was in der Vorlage steht, zu Ihrer app.yml.
Mir ist aufgefallen, dass diese Seite – S3-Compatible API – die verschiedenen checksum-*-Header nicht mehr als nicht unterstützt auflistet.
@PatPatterson Ich bin mir nicht sicher, ob Sie noch in diesem Thread sind oder nicht – aber wurde dafür offizielle Unterstützung hinzugefügt?
Können Sie bestätigen, dass Ihr Backblaze B2 ohne die von mir vorgeschlagene Korrektur funktioniert?
Vielen Dank für die schnelle Antwort, und Entschuldigung – ich hätte mehr Details hinzufügen sollen. In einem anderen Open-Source-Paket (Mastodon) haben wir die aws-sdk-core-Gem auf < 3.216.0 beschränkt, um genau dieses Problem für Leute zu lösen, die Backblaze (und ich vermute andere, aber dort trat es auf) verwenden.
Aber in den letzten Wochen habe ich Folgendes bemerkt:
- Diese Seite auf der Backblaze-Website listet diese Header nicht mehr als nicht unterstützt auf
- Eine neuere aws-gem-Version erwähnt die Behebung des Problems, bei dem
when_requiredzuvor nicht vollständig beachtet wurde
Bei früheren Recherchen hatte ich diesen Thread mit mehr oder weniger demselben Problem gesehen und versucht zu verstehen, ob wir jetzt sicher ein Gem-Update durchführen können, wenn Backblaze diese Unterstützung tatsächlich hinzugefügt hat und/oder das Gem das Problem jetzt vollständig umgeht.
Hallo – ja, Backblaze B2 hat Anfang dieses Jahres die offizielle Unterstützung für die Checksum-Header hinzugefügt.
Ausgezeichnet! Danke für die Bestätigung.