I want to stop using Amazon s3 for uploads.
I’ve not done a rake task like this so want to check things before I run on the live environment.
My plan is to use a clone of my live server to test the rake task uploads:migrate_from_s3.
Will this move the files from s3?
Or copy them to the local storage and leave the s3 files there until I manually delete them?
If it deletes them from s3 that will break the live forum and that would be bad!
thanks
rake interrotto!
Non si sa come eseguire il task 'uploads:migrate_from_s3' (vedi l'elenco dei task disponibili con `rake --tasks`)
Intendevi? uploads:migrate_to_s3
Ho provato inizialmente a risolvere il problema della migrazione da S3, e dopo aver completato l’uso della mia migrazione come banco di prova per il codice che stavo scrivendo, mi è stato detto che avevo adottato un approccio completamente errato. Questa affermazione è stata supportata da una corruzione dei dati nella mia istanza (di grandi dimensioni) che ho migrato da S3 a file locali. Relativamente di recente, ho dovuto correggere manualmente i dati danneggiati nel database, e non mi aspetto di aver terminato la pulizia dopo il mio tentativo.
Se dovessi iniziare oggi una migrazione da S3 al mio storage personale, avvierei un contenitore MinIO accanto a Discourse, utilizzerei minio-client per copiare i dati da S3 al mio contenitore MinIO, riconfigurerei Discourse per il nuovo percorso “S3” del mio MinIO locale e poi eseguirei posts:remap o rifarei tutti i post per servire i file “S3” dal mio contenitore MinIO.
Ecco un esempio di come dovrebbe funzionare posts:remap in questo caso. Ho il presentimento che esista un esempio migliore da qualche parte qui, ma questo dovrebbe essere sufficiente per iniziare.
Quindi ho seguito queste istruzioni e sono riuscito a copiare i miei caricamenti, ma ci sono ancora collegamenti al server S3 in tutta l’istanza, anche con i caricamenti su S3 disattivati. Ho provato un remap di Discourse, ma non è stato efficace; ho provato anche un rake posts:remap, senza successo, e anche posts:rebake non ha funzionato.
È stato davvero facile impostare i caricamenti su S3, ma non lo è stato tornare indietro.
Ho ricollegato i caricamenti uno per uno, dato che il sito non è ancora esteso. rake posts:missing_uploads è stato utile per verificare di averli tutti individuati.
Sei sicuro che tutti gli URL siano rimappati correttamente? Non solo per le immagini, ma devi anche rimappare gli URL per avatar, icone, backup, ecc. Prova il comando sopra e verifica se nell’output è presente l’URL di S3.
Gli URL sono tutti tornati relativi. Purtroppo, per chi in futuro leggerà questo post, non sono sicuro di quale combinazione di task rake e ricostruzioni dell’app sia stata la chiave del mio successo. Qualcuno più esperto di me su Discourse dovrebbe mettere insieme una guida infallibile su come realizzare questo.
L’uso di awscli come descritto da Pravi sopra è stato efficace per copiare i file da S3.
Anch’io sono molto confuso.
In precedenza avevo due bucket S3 in momenti diversi. E rake posts:missing_uploads ha mostrato che circa 500 post mancavano di upload o erano stati interessati.
Poi ho deciso di copiare gli asset di entrambi i bucket su un server Ubuntu locale (su un’istanza GCP). Ora gli upload mancanti sono nell’ordine di 1000.
Se eseguo Upload.all.sample(1000).pluck(:url) ottengo percorsi diversi per gli upload: alcuni sul server locale, alcuni su bucket1 e pochi su bucket2.
Cosa dovrei fare ora? (attualmente ho configurato gli upload sul server locale).
Il mio è un piccolo sito web, con solo circa 1000 post in due anni.
Posso provare a farlo, se ci sono buone probabilità di successo.
Modifica: L’ho fatto, ma le immagini nei miei post sono scomparse completamente. Passando il mouse sul segnaposto dell’immagine non veniva mostrato alcun link URL. In precedenza, oltre a mostrare una piccola icona immagine, veniva visualizzato anche l’URL dell’immagine.
Sto fornendo circa 45 righe di output. Non so se vuoi che incollino qui tutte le 1000 righe di output?
Vedo diversi avatar rotti sul tuo sito. Immagino sia perché hai eliminato il bucket S3 o non hai rigenerato i file dopo averli copiati da S3. Perché ci sono due bucket nell’output?
Scusa, in qualche modo ho perso la notifica della tua risposta. Grazie comunque.
Non ho eliminato il bucket S3, ma effettivamente ho cambiato bucket in precedenza (in quel momento non ero a conoscenza delle complicazioni). Quindi tutti i miei asset erano distribuiti su due bucket S3, ma ora li ho copiati manualmente anche sul server locale (/var/discourse/shared/web_only/uploads/default).
Come dovrei procedere per risolvere questo caos?
Nota: conosco i comandi di base del container, della console Rails e di AWS S3.