Sur un site où les sauvegardes et les uploads vers des buckets Google fonctionnaient, la page de sauvegarde indique maintenant :
Échec de l'accès au stockage de sauvegarde : Un en-tête ou une requête que vous avez fourni demande une fonctionnalité qui n'est pas implémentée.
Je pensais qu’il pourrait s’agir d’un problème de permissions du bucket (mais cela n’avait pas vraiment de sens car la même configuration fonctionnait il y a quelques semaines), mais en relisant ce message, cela semble indiquer que Discourse essaie de faire quelque chose qui n’est, euh, pas implémenté. (Ce qui semble aussi peu probable).
Les uploads S3 vers un bucket Google (bien qu’un autre) fonctionnent parfaitement. Il y a un site de production sur la version 2.4.0.beta9 et un site de staging exécutant la version 2.4.0.beta10 (et je viens de faire une autre mise à niveau sur le site de staging).
Il s’agit d’une installation standard à 2 conteneurs avec uniquement des plugins standard et les paramètres S3 configurés avec env: dans le fichier .yml. EDIT : J’ai supprimé ces paramètres ENV du fichier yml et reconstruit (la commande destroy, start ne les a pas supprimés) et le problème persiste.
Je ne vois aucun commit évident (pour moi) qui pourrait être lié.
EDIT : Il existe une autre instance d’installation standard exécutant 2.4.0.beta8 avec les mêmes paramètres et elle fonctionne, il semble donc que quelque chose se soit produit entre beta8 et beta9. Cela ressemble à un . @gerhard, cela pourrait-il être lié à vos modifications de sauvegarde ?
P.S. J’ai vérifié un site utilisant DigitalOcean Spaces et les sauvegardes fonctionnent parfaitement.
Rencontrez-vous l’erreur dès que vous visitez /admin/backups ? Je n’ai rien modifié dans cette zone récemment, mais nous avons mis à jour le gem aws-s3 entre beta8 et beta10, passant de la version 1.36.1 à la version 1.60.1. Il est possible que cela ne fonctionne plus avec les buckets Google. Vous pourriez trouver la cause dans le CHANGELOG. Vous pouvez tester avec différentes versions du gem pour affiner le problème.
Ainsi, en entrant dans le conteneur, en éditant le fichier Gemfile et en remplaçant
gem 'aws-sdk-s3', require: false
par
gem 'aws-sdk-s3', '1.51.0', require: false
puis en exécutant
bundle install --no-deployment
sv restart unicorn
pour vérifier si cela fonctionne, une recherche dichotomique des versions montre que 1.51.0 est la dernière version fonctionnelle. Le problème semble donc provenir de la version 1.52.0, qui introduit la fonctionnalité « Ajout du support pour SelectObjectContent afin de scanner une partie d’un objet spécifiée par une plage de balayage ».
Je ne sais pas quoi faire ensuite. Je pense que je vais ouvrir un ticket sur GitHub - aws/aws-sdk-ruby: The official AWS SDK for Ruby · GitHub, mais je ne suis pas sûr qu’ils s’en soucient, n’est-ce pas ? Peut-être devrais-je plutôt ouvrir un ticket auprès de Google ?
Discourse fonctionne toujours pour les uploads sur les buckets Google, mais pas pour les sauvegardes.