S3 CDN URL ignored when uploading into posts

All of our traffic goes through CloudFront, and static content is fetched by CloudFront from one of several S3 buckets.

With uploads being sent to S3, Discourse embeds the content with a generic bucket URL despite our having s3 cdn url set. Once submitted, posts appear to use the correct URL set in s3 cdn url, although this may also be because we have DISCOURSE_CDN_URL set as well (both are set to the same URL).

The post preview window references the standard S3 URL seen in the unbaked post, though. This is a problem because we use a private ACL on files uploaded to our Discourse uploads bucket, as content on this bucket should never be accessed outside of CloudFront. The result is a broken image in the preview window.

2 « J'aime »

C’est décevant que cela soit signalé depuis de nombreuses années sans correction.

@DanielMarquard Avez-vous trouvé une solution de contournement ou avez-vous été contraint de rendre votre ACL S3 publique ?

Je ne pense pas qu’il soit juste de dire que cela est cassé, dans la mesure où l’implémentation plus complexe n’est pas entièrement prise en charge.

Les téléchargements S3, tels que documentés, fonctionnent et se comportent correctement.

@Stephen Certainement sujet à interprétation…

Pour moi, il semble « cassé » qu’il utilise l’URL CDN dans un cas et pas dans l’autre, et cela impose une configuration S3 que AWS recommande en fait d’éviter (ACL publique pour un bucket S3).

Je suis nouveau dans le projet Discourse en général, mais je peux certainement travailler sur une PR.

Cela pourrait valoir la peine d’être corrigé dès maintenant : AWS prend de plus en plus au sérieux l’information des utilisateurs concernant les ACL de lecture publique.

4 « J'aime »

Étant donné que notre implémentation actuelle ne contient plus de balise IMG, par exemple :

![image|690x298,50%](upload://eGAOR4Xy4aRM2lwPIuTokBf60jS.png)

Il devrait être assez simple d’appliquer un CDN à ce qui précède, ce qui permet d’économiser du trafic.

@vinothkannans, peux-tu corriger cela afin que l’aperçu utilise l’URL du CDN ?

Au lieu que l’aperçu affiche :

<img src="//assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/6/6/66ef078b3ef9da9aa1b3356cb21fe22a0d25eaf0.png" alt="image" class="resizable" width="345" height="149">

Nous devrions afficher l’URL du CDN, qui est la suivante :

<img src="https://d11a6trkgmumsb.cloudfront.net/original/3X/6/6/66ef078b3ef9da9aa1b3356cb21fe22a0d25eaf0.png" alt="image" class="resizable" width="345" height="149">
6 « J'aime »

C’est maintenant corrigé selon le commit ci-dessous

6 « J'aime »

Ce sujet a été automatiquement fermé après 32 heures. De nouvelles réponses ne sont plus autorisées.

Suite à la discussion sur L’URL CDN S3 est ignorée lors du téléchargement dans les publications :

Il semble que ce problème ait régressé ; je peux le reproduire ici sur meta.

3 « J'aime »

Peut-on vérifier cela @vinothkannans ou @falco ?

3 « J'aime »

Conformément au récent changement, nous récupérons désormais l’URL du fichier téléchargé directement à partir de la requête de téléchargement initiale. Auparavant, nous la recevions via le point de terminaison /uploads/lookup-urls.json. Ce commit devrait résoudre le problème.

5 « J'aime »

Il semble que cette correction ne prenne pas en charge les emojis personnalisés dans l’aperçu, par exemple :allthethings:.

4 « J'aime »

Cela concerne également les pièces jointes manquantes, telles que les exports de données ou tout autre fichier joint. Ceux-ci proviennent toujours de S3.

Je peux régler ça !

3 « J'aime »