Erreur d'upload d'image : le bucket n'autorise pas les ACL

Les utilisateurs et même les administrateurs ne peuvent plus télécharger d’images.
Le journal d’erreurs indique une erreur de hotlink.
Limite de 4 Mo, mais j’ai essayé de télécharger un fichier de 800 Ko en test après qu’un utilisateur se soit plaint.

Nous avons effectué une mise à jour récente il y a quelques jours (2.9.0.beta4).
Nous avons récemment configuré des buckets S3.

J’ai remarqué une correction récente sur GitHub datant d’il y a 15 jours pour le hotlink.
Je ne peux pas créer de problèmes sur GitHub… est-ce l’endroit pour signaler les bugs ?

Message (2 copies signalées)

défaut : Échec de la récupération de l'image hotlinkée (https://jackrail.space/images/discourse-logo-sketch-small.png) post : 586
Le bucket n'autorise pas les ACL
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/dualstack.rb:36:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/accelerate.rb:50:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/request_callback.rb:71:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/client.rb:11274:in `put_object'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/object.rb:1329:in `put'
/var/www/discourse/lib/s3_helper.rb:74:in `upload'
/var/www/discourse/lib/file_store/s3_store.rb:116:in `store_file'
/var/www/discourse/lib/file_store/s3_store.rb:30:in `store_upload'
/var/www/discourse/lib/upload_creator.rb:212:in `block (2 levels) in cr...

Backtrace

/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:243:in `public_send'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:243:in `log'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:58:in `rescue in block in execute'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:35:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:234:in `block in each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `upto'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `each'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:34:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'

Je pense l’avoir corrigé, mais je ne suis pas sûr de ce que fait cette fonctionnalité ni si elle désactive mes sauvegardes S3.
« Activer les téléchargements S3 »
J’ai activé cela en pensant que cela faisait partie de la procédure de sauvegarde.
Je l’ai désactivé et je ne reçois plus cette erreur lorsque je télécharge une image de test.

Ce paramètre place vos téléchargements dans le compartiment S3 et est distinct des téléchargements. Il semble que ce compartiment ne soit pas correctement codé pour les téléchargements (voir Utilisation du stockage d’objets pour les téléchargements (S3 et clones) pour plus d’informations).\n\nVous devriez quand même vérifier que vos sauvegardes fonctionnent.

1 « J'aime »

Je suppose que c’était le problème et il est confirmé comme résolu par l’utilisateur qui s’est plaint.

Je ne suis pas sûr de ce que fait ce téléchargement d’images, mais je suppose que c’est une fonctionnalité supplémentaire dont les serveurs complexes pourraient avoir besoin. Je suppose que nos 40 utilisateurs n’ont pas besoin d’un discourse avec cette fonctionnalité complexe. Nous sommes plus intéressés par les likes emoji.

Cependant, lorsque j’ai suivi les instructions S3, j’ai dû revenir en arrière et créer un nouveau bucket pour les « sauvegardes » alors que le bucket d’origine était destiné aux téléchargements (car je l’ai fait dans l’ordre où il apparaissait pour les paramètres). Je pense que j’ajouterai probablement des informations supplémentaires aux instructions S3 en réponse pour aider les autres à suivre plus facilement. De plus, la politique d’autorisation mentionnée dans ce fil de discussion n’existait pas, et j’ai fini par trouver une solution « * » sur un autre site Web. J’essaierai de clarifier cela dans ce fil. Cela a fonctionné, mais cela a nécessité du travail et des ajustements aux instructions.

Ces actions n’ont pas fonctionné… J’ai utilisé * à la place.

"Action": [
           "s3:ListAllMyBuckets",
           "s3:HeadBucket"
       ],

Le fil de discussion que j’ai utilisé pour configurer et suivre les instructions est ici

Il indique également que les téléchargements S3 sont activés et cochés. Il semble que cela complique trop les choses pour l’utilisateur moyen.
D’un autre côté, j’espère que mes sauvegardes fonctionnent correctement sans cela.

Pourquoi avez-vous utilisé * à la place ?

Je l’ai trouvé quelque part en cherchant sur Google, juste pour que le code soit accepté. Si vous regardez mon message que vous citez, j’ai fourni le lien. Je cherche juste sur Google et je copie-colle la plupart du temps. :slight_smile:
Cependant, j’ai remarqué plus tard que les téléchargements d’images n’étaient pas nécessaires pour que les sauvegardes fonctionnent. Je ne sais toujours pas pourquoi on l’utiliserait. Vous n’avez vraiment besoin que de la sauvegarde. Vous n’avez pas besoin de deux buckets. J’ai décoché cette partie dans les paramètres car j’avais toujours des erreurs de téléchargement et les images n’étaient pas autorisées par les utilisateurs. Décocher cet élément a résolu le problème. Nous avons un petit groupe de serveurs, donc nous devrions être tranquilles pendant longtemps.