J’essaie de configurer Discourse pour utiliser le stockage objet compatible S3 de Scaleway, mais je n’arrive pas à faire fonctionner et je ne suis pas sûr d’où vient le problème.
J’ai vérifié que les deux buckets fonctionnent avec aws-cli et que les paramètres CORS sont correctement configurés en suivant la documentation officielle de Scaleway, donc je ne pense pas que le problème vienne des buckets eux-mêmes.
Voici mes paramètres S3 de Discourse (une partie du nom du bucket a été masquée) :
Lorsque j’ouvre l’onglet des sauvegardes, j’obtiens l’erreur « Failed to list backups from S3: Aws::S3::Errors::BadRequest ».
Et lorsque j’essaie de télécharger une image, je vois ceci dans les journaux : « Job exception: Failed to open TCP connection to [redacted]-discourse-files.s3.fr-par.amazonaws.com:443 (getaddrinfo: Name or service not known) ».
J’utilise la dernière version de Discourse : 2.4.0.beta10 (14ae574bc5).
J’ai pu déterminer quelle mise à niveau du gem aws-sdk-s3 a empêché l’utilisation des buckets GCP de fonctionner, bien que la solution choisie par mon client ait été de passer à un bucket AWS.
@Falco oui, je suis aussi à court d’idées.
L’erreur concernant l’URL contenant amazonaws concerne spécifiquement le téléchargement de fichiers, et non les sauvegardes. Pour les sauvegardes, je n’obtiens que l’erreur générique, donc je suppose que les deux sont brisés à cause du problème d’URL.
Tu vois autre chose ?
@pfaffman merci pour l’astuce – je vais voir si changer la version du gem aide.
Salut @FroggyC,
Je n’ai finalement pas eu le temps de déboguer cela, donc je n’ai pas essayé de modifier les versions de gem. J’ai plutôt opté pour l’utilisation d’Amazon S3 en suivant la documentation officielle, et tout a fonctionné immédiatement.
Désolé que ce ne soit pas une meilleure nouvelle…
Vous pourriez essayer de demander à Scaleway — la charge de la compatibilité leur incombe. S’ils ne sont pas entièrement compatibles avec AWS S3, ils devraient corriger cela.
Vous sous-entendez que c’est de leur faute, alors que jusqu’à présent vous avez ignoré le commentaire de @dino :
Tant que l’URL s3_endpoint (non altérée) n’est pas utilisée telle quelle, il sera difficile de convaincre Scaleway que l’erreur vient de leur côté. Surtout que d’autres clients S3 parviennent à se connecter.
OK, prouvez-le. Montrez-moi la documentation et les traces de journal qui démontrent que c’est le cas. Si vous pouvez fournir des preuves concrètes que le problème vient de notre côté, je regarderai.
Alors, comment puis-je dire à Discourse de journaliser ses tentatives de connexion S3 ? Une fois que nous saurons avec certitude quelle URL il souhaite contacter, je pourrai intercepter le trafic et partager les résultats.
La raison pour laquelle le téléchargement/sauvegarde S3 ne fonctionne pas est que la région doit être définie sur fr-par (ou nl-ams), ce qui ne peut être fait qu’en contournant la validation des paramètres du site de Discourse :
Bien sûr, il s’agit d’une solution de contournement. Une fois que vous réinitialisez ou modifiez ce paramètre du site via l’administrateur web, vous ne pouvez plus le remettre dans un état fonctionnel (sauf en utilisant à nouveau la console Rails).
Je suppose que le client AWS/S3 permet tous de définir explicitement une chaîne de région (contrairement à l’état actuel de l’interface web d’administration).
C’est également quelque peu trompeur dans le cas de la valeur déroulante “EU (Paris)” dans Discourse, car elle fait référence au schéma de nommage AWS eu-west-3 (ou quelque chose de similaire) et non à la valeur attendue pour Scaleway.
Aha. Avons-nous besoin d’un champ de configuration de site spécial “région compatible S3” @falco ? Cela permettrait aux utilisateurs de saisir des régions complètement arbitraires (et donc ‘inventées’ du point de vue d’Amazon) ?
Les utilisateurs de clones S3 doivent définir la variable d’environnement S3 Endpoint, qui remplace la région S3.
J’ai un tutoriel complet expliquant cela avec le clone S3 de Digital Ocean, mais j’attends que Digital Ocean corrige un bug dans leur CDN S3 avant de le publier.
Si Scaleway est dans un meilleur état que Digital Ocean, je pense que je vais essayer et m’inspirer de ce guide.
Oui, mais comment savoir qu’il faut le faire ? La description du paramètre de site existant mentionne-t-elle cela ? Je pense que ce devrait être le cas. Peux-tu le modifier ?