La sauvegarde contient de nombreux répertoires et sous-répertoires. Je pense que vous devez copier les fichiers de ces répertoires, depuis les deux buckets de manière récursive, vers l’emplacement correspondant sur le serveur local. Par exemple, tout le contenu des répertoires 1X et 2X des deux buckets doit être copié dans les répertoires 1X et 2X du serveur local. Je ne suis pas totalement certain, mais c’est ainsi que je le vois.
Pouvez-vous confirmer que vous avez correctement copié tous les fichiers ?
Oui, je comprends parfaitement et j’ai veillé à ce que leurs chemins relatifs restent exactement les mêmes.
Par exemple, si un fichier se trouvait auparavant à : //bucket1/uploads/original/2x/f/filename.jpg
Et un autre à : //bucket2/uploads/original/1x/a/filename.png
Ces deux fichiers existent désormais à : /var/discourse/shared/web_only/uploads/default/original/2x/filename.jpg et ../original/1x/a/filename.png
Problèmes
Avant de copier le contenu du bucket vers le serveur local, je constate que certaines de mes images ne s’affichent que sous forme d’icônes, et l’image complète n’est accessible aux visiteurs du site qu’en cliquant sur cette icône.
Après avoir copié (sans déplacer) tout le contenu du bucket vers l’emplacement indiqué ci-dessus sur mon serveur local (en conservant les chemins relatifs), et après avoir exécuté la commande discourse remap:oldurl-or-path new-url-or-path,
Rien n’a changé visuellement sur le site. Mais ensuite, j’ai exécuté la commande rake posts:rebake ,
Et même mes icônes d’images ont disparu, et aucune URL/chemin n’apparaît lorsque je passe le pointeur de la souris sur l’emplacement vide du placeholder de l’image.
Mais comme je l’ai déjà expliqué, après avoir effectué les opérations de « remap » et de « rebake », même les icônes des images disparaissent (c’est-à-dire que la situation empire).
Vous devez fournir le chemin correct lors du remappage, sinon cela peut causer des dysfonctionnements. J’ai manuellement remappé un lien S3 à partir de la sortie d’exemple que vous avez fournie précédemment, et cela fonctionne.
Vous pouvez consulter un exemple de publication sur mon site web ici (la publication est en hindi, mais vous devriez facilement repérer la petite icône de l’image au milieu du texte). L’image complète n’apparaît que si l’on clique sur cette petite icône.
Cependant, si je procède à une réaffectation, puis à une nouvelle compilation, cette icône disparaît complètement. Il n’y a alors plus aucun moyen pour le visiteur de voir l’image.
Il semble que vous ayez déjà utilisé CloudFront pour la mise en cache. Videz le cache de votre navigateur et réessayez.
Si vous avez effectué une configuration CloudFront, il serait préférable d’annuler toutes ces configurations.
Maintenant, j’obtiens également les mêmes liens CloudFront. Il semble que vous ayez activé AWS CloudFront pour votre site. CloudFront met en cache les images de votre bucket. Je pense que vous devez supprimer la distribution de CloudFront. Vous devez vous connecter à votre compte AWS pour vérifier si la distribution CloudFront est active ?
Je n’ai jamais utilisé CloudFront (ni aucun autre CDN) sur AWS ni en front-end. Bien que, il y a environ deux ans, j’aie utilisé CloudFlare pendant un mois ou deux, mais je l’ai ensuite supprimé définitivement.
Je n’ai pas non plus choisi CloudFront sur AWS. Donc, aucune question ne se pose de ce côté non plus.
De plus, sur mon PC, lorsque j’ouvre les images, elles affichent les adresses du bucket AWS, et non celles d’un autre CDN !
Vous suggérez simplement que je remap les chemins des images (de l’URL du bucket S3 vers le chemin du serveur local). Puis je rebake.
Mais comme je l’ai mentionné plus haut, je l’ai déjà fait et j’ai constaté que cela aggrave le problème. (de plus, après le rabking, la fonction « Restaurer » ne fonctionne pas non plus et il est difficile d’annuler).
Je vais réessayer, avec le plus grand soin possible. Mais je cherchais une méthode pour comprendre ce qui se passe derrière le rideau. Avec au moins un exemple de message, je voulais voir quels messages sont associés à quels buckets et dans quel pétrin je me trouve.
Quoi qu’il en soit, je vais réessayer et te tenir informé ici. Merci encore.
Le chemin que vous avez spécifié dans votre précédente remappage sera reflété dans la sortie de la commande ci-dessous. Comme les deux buckets sont toujours présents, je pense que votre précédente remappage a peut-être échoué. Quoi qu’il en soit, c’est à vous de décider maintenant. J’espère que vous trouverez rapidement une solution. Bonne chance.
./launcher enter app
rails c
Upload.all.sample(2000).pluck(:url)
Pas plus compétent que toi, mais je viens de le faire et j’ai réussi avec l’aide de @Pravi.
Les étapes à suivre pour revenir de l’upload S3 à l’état par défaut
Ce n’est pas super simple – faites très attention au texte et aux liens, car si quelque chose tourne mal, ce sera un vrai désordre à remettre en ordre. Mais c’est tout à fait faisable.
Étape 1 – Copier les fichiers de votre bucket S3 vers le dossier public/uploads/default
Installez d’abord AWS CLI dans le conteneur de l’application :
cd /var/discourse
./launcher enter app
sudo apt install awscli
Configurez AWS avec votre ID et mot de passe S3 (généralement simple) :
aws configure
Ensuite, utilisez aws pour copier tout le contenu du bucket dans public/uploads/default/ :
C’est plus simple en trouvant une image sur votre forum et en inspectant son URL. Vous voulez chaque élément jusqu’au nom du fichier (y compris le dernier /) :
Étape 3 – Rebake les posts et reconstruire l’application :
rake posts:rebake
exit
./launcher rebuild app
Étape 4 – Désactiver S3
Désactivez les uploads S3 dans les paramètres (ou dans votre app.yml si vous l’avez configuré ainsi). Si vous utilisiez un CDN, supprimez également le lien vers celui-ci dans les paramètres (sinon, cela ne se désactive pas vraiment).
Arrêtez votre conteneur. Je l’ai fait en déplaçant le contenu vers un nouveau conteneur comme sauvegarde, comme première étape.
Ouf ! C’est fait. Jusqu’à présent, je n’ai rencontré aucun problème. Allez tester ça !
Bon travail ! Je pense que ce sont les étapes qui m’ont finalement aidé à réussir, mais j’ai essayé beaucoup de remappages différents qui n’ont pas aussi bien fonctionné ! C’est super d’avoir des instructions formalisées.