Après avoir installé Discourse (2.7.0.beta1) et importé d’anciens messages de Google Groups, j’ai ajouté la configuration du bucket/clé S3 (mais pas d’URL CDN) et exécuté
rake uploads:migrate_to_s3
ce qui semblait fonctionner parfaitement. Toutes les images ont été téléchargées vers S3 et Discourse tentait d’y accéder via une URL S3 générée automatiquement — quelque chose comme
https://ortus-discourse.s3.dualstack.us-west-2.amazonaws.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Ensuite, j’ai renommé le bucket (en ortus-discourse-uploads) et configuré une distribution Cloudfront devant celui-ci avec un CNAME configuré via Cloudflare appelé
https://communitycdn.ortussolutions.com/
Le CNAME, Cloudfront et S3 fonctionnent tous parfaitement. Des URLs comme celle-ci servent correctement l’une des images du bucket :
https://communitycdn.ortussolutions.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Cependant, le problème est que Discourse reste bloqué sur l’ancien domaine ortus-discourse.s3.dualstack.us-west-2.amazonaws.com (qui ne fonctionne plus car le bucket a été renommé), et peu importe le nombre de fois où je reconstruis le conteneur ou je récuise les anciens messages, je n’arrive absolument pas à faire en sorte que Discourse utilise la nouvelle URL CDN. J’ai cherché sur Google pendant une journée et j’ai probablement récuit une douzaine de fois (à l’intérieur du conteneur app) avec différents paramètres. Chaque fil de forum donne le même conseil : reconstruire et récuire, mais cela ne fonctionne pas.
Ce ne sont pas seulement les images dans les messages qui sont brisées ; même la balise <link rel="icon" type="image/png" href=""> et le logo du site restent bloqués sur l’ancien domaine et n’utilisent pas l’URL CDN S3.
Voici mes paramètres S3 actuels :
DISCOURSE_S3_ACCESS_KEY_ID: '********'
DISCOURSE_S3_SECRET_ACCESS_KEY: '******'
DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_ENABLE_S3_UPLOADS: true
DISCOURSE_S3_BUCKET: 'ortus-discourse-uploads'
DISCOURSE_S3_UPLOAD_BUCKET: 'ortus-discourse-uploads'
DISCOURSE_S3_BACKUP_BUCKET: 'ortus-discourse-backups'
DISCOURSE_S3_REGION: 'us-west-2'
DISCOURSE_S3_CDN_URL: https://communitycdn.ortussolutions.com
DISCOURSE_CDN_URL: https://community.ortussolutions.com
J’ai même essayé de mapper l’ancienne URL vers la nouvelle dans les messages comme ceci :
rake posts:remap["ortus-discourse.s3.dualstack.us-west-2.amazonaws.com","communitycdn.ortussolutions.com"]
mais la commande a indiqué 0 message affecté.
Nulle part dans mes variables d’environnement ou mes paramètres de base de données, je n’ai rien qui fasse référence à l’ancien nom de bucket ortus-discourse, donc je ne comprends pas d’où Discourse tire cette information. Je suis nouveau sur Discourse et je ne suis pas développeur Ruby, donc je n’ai pas creusé plus loin que ce que je peux voir dans mon app.yml, l’interface d’administration et la sortie des commandes rake que j’ai trouvées sur les forums.