Impossible de télécharger vers S3 (Cloudflare R2)

J’ai configuré R2 sur mon site en suivant certains guides ici, mais maintenant, lorsque j’essaie de télécharger un fichier, je vois uniquement un message générique : « Désolé, mais votre téléchargement a échoué. Veuillez réessayer. » La seule chose que je vois dans les journaux est ceci :

J’ai configuré mes URL dans le fichier app.yml car l’interface web rejetait mes URL telles qu’elles étaient structurées dans les publications tutorielles (format invalide) :

image

L’URL CDN_URL correspond au domaine personnalisé (tel que défini dans Cloudflare) et S3_ENDPOINT est l’URL affichée dans le panneau web. J’ai correctement configuré toutes mes options avec des jetons d’authentification créés correctement :

Il semble que Cloudflare reçoive certaines requêtes, mais rien n’est stocké.

Quel est le problème ?

Salut,

Est-ce que ce n’est pas à cause des barres obliques (/) finales dans l’URL du CDN S3 et du point de terminaison S3 ?

Sont-ce les guides que vous avez suivis ? Êtes-vous certain que votre bucket de téléchargement s’appelle « discourse » ?

Oui, j’ai suivi le premier.

Correct.

Je vais essayer de supprimer les slashs et je vous tiendrai au courant.

J’ai supprimé les slashes de fin, mais toujours rien. Même erreur Unauthorized.

Le jeton est également bien configuré

Êtes-vous certain que le jeton Cloudflare R2 dispose des autorisations de lecture et d’écriture, et avez-vous correctement configuré la politique CORS ? Je sais que vous avez une configuration de serveur quelque peu unique, et les autorisations ainsi que la configuration du bucket Cloudflare doivent être parfaitement exactes, sinon des erreurs d’autorisation seront générées.

vous avez créé le mauvais type de jeton : vous disposez d’un jeton API général. Vous devez créer un jeton pour le bucket R2 :

  1. Accédez au tableau de bord Cloudflare → R2 Object Storage (dans la barre latérale gauche, sous storage & databases).
  2. Sur le côté droit de la page de vue d’ensemble de R2, cliquez sur manage (API tokens).
  3. Cliquez sur create account API token.
  4. Saisissez un nom de jeton approprié et définissez les autorisations sur object read & write, puis cliquez sur save.
  5. Cela génère un access key id et un secret access key. Ce sont ces valeurs que vous devez saisir dans la configuration S3 de Discourse.

Et oui, vous devez supprimer les barres obliques finales, car Discourse les rejettera probablement.

Merci, il s’est avéré que c’était le problème.. Inutilement déroutant, mais c’est la faute de Cloudflare

Ouais, le tableau de bord Cloudflare peut être un vrai nid de guêpes en termes de configuration, lol. Content que tu aies réussi à régler le problème !