Un tutorial di integrazione di AWS S3 con Discourse sarebbe gradito

Dopo aver sbattuto la testa contro un muro per 3 ore cercando di far funzionare la mia configurazione AWS S3 con Discourse su un’istanza AWS Lightsail, sono fermamente convinto che un tutorial semplice e diretto su questo argomento sarebbe utile. Ci sono TUTTI i tipi di vicoli ciechi in cui ci si può infilare con questo. Voglio dire, non ho problemi a creare un bucket che possa recuperare file da remoto utilizzando l’URL AWS S3 fornito, ma una volta che si introducono la CDN, l’Endpoint S3 (che l’interfaccia utente delle impostazioni dichiara chiaramente che può essere lasciato vuoto, ma al tentativo di caricamento restituisce il messaggio interno di “L’Endpoint non può essere vuoto”) e cose basilari come quale livello di autorizzazioni è REALMENTE necessario se si utilizza una CDN tramite CloudFront di Amazon.

È semplicemente troppo. Ho setacciato internet e non esiste nulla di simile, e certamente nulla che ho trovato fosse aggiornato con Discourse oggi.

Grazie per qualsiasi indicazione.

Penso che il mio principale ostacolo al momento siano le autorizzazioni, almeno dal punto di vista di Discourse che richiede Key ID e Key Secret. Ho un utente in IAM per questo, ma NON c’è NULLA nelle informazioni del Bucket S3 che sembri associare questo utente a quel bucket, quindi non ho idea se questa sia la disconnessione. Onestamente, uso LightSail e AWS da oltre 8 anni, ma quest’area S3 è scritta in una sorta di offuscamento in stile UX per sviluppatori con 50 modi diversi per fare le cose. Per niente intuitivo.

Hai dato un’occhiata a Configurare un provider di archiviazione oggetti compatibile con S3 per i caricamenti?

1 Mi Piace

(post eliminato dall’autore)

Ciao Jay. Sì, l’ho guardato molte volte. Dato che è del 2020, ha impostazioni come DISCOURSE_S3_REGION, ma l’area di amministrazione non ha tale impostazione.

Inoltre… non dovrei eseguire il rake dei miei vecchi dati DOPO aver configurato correttamente S3 e aver verificato che funzioni?

Questo è il tipo di cose di cui sto parlando. Le impostazioni in Discourse fanno molte supposizioni sul fatto che un utente conosca AWS, shell e Discourse come farebbe uno sviluppatore.

Ecco dove sono arrivato al momento.

Ho una CDN funzionante e ho caricato manualmente un file che funziona:

https://s3.kitmaker.net/IMG_7184.JPG

Quando carico tramite Discourse ottengo:

Impossibile aprire la connessione TCP a discourse-kitmaker.s3.kitmaker.net:443 (getaddrinfo: Nome o servizio non noto)

Ecco le mie impostazioni attuali:

Ah, e c’è quell’impostazione Regione che stavo ignorando. Sì, ma non ha aiutato una volta impostata correttamente. :smiley:

Ma dimostri di non seguire quelle istruzioni.

Ecco perché devi seguire quelle istruzioni e non farlo nell’interfaccia utente (UX).

Queste sono le istruzioni da seguire.

E non dimenticare la parte che aggiungi allo yml per caricare gli asset su s3.

Lo farei su un sito di prova in modo da non rovinare quello live.

Sì. Aggiungi le impostazioni s3 a env nello yml, ricompila, quindi verifica che funzionino, quindi esegui l’attività rake. Devono essere impostate lì, non nel database. Non sono sicuro del perché non le abbiano nascoste dall’interfaccia utente.

Ma c’è anche questo: How are you authenticating Discourse to AWS? Help us improve the settings!

1 Mi Piace

Grazie per quei link. Il primo link che hai pubblicato contiene un altro link nell’area AWS (Set up file and image uploads to S3) del 2013, quindi mi scontro immediatamente con loro che dicono di inserire una policy del bucket X (che sembra obsoleta) quando il CDN di AWS tramite Cloudfront ha già sostituito la policy con la propria. Modificarla? Lasciarla? Questa è la cavolata di cui parlo. Ugggg!

1 Mi Piace

Non sono davvero le impostazioni “Riempire lo spazio vuoto” in app.yml o le impostazioni di amministrazione il problema. È più una combinazione di come tali impostazioni interagiscono con il bucket creato o la CDN, ecc. Quindi è il lato Amazon che ha bisogno di essere chiarito. Voglio dire, capisco, non è Discourse, ma sarebbe davvero utile per gli utenti di DISCOURSE che funzionano effettivamente tramite S3. Spero che questo abbia senso.

Capisco. Non imposto un bucket aws da un po’. Quella parte può essere più complicata, ma non è quello che hai pubblicato su come hai fatto.

Ma anche quello è piuttosto semplice, incolli le cose e poi, se hai degli errori, puoi affrontarli.

Questo è l’unico problema che hai descritto.

Come hai configurato il bucket? Quali permessi hai dato all’utente? Hai generato le chiavi? Quali errori hai riscontrato (ma pensavo avessi detto che avevi aggiunto un’immagine a un post e aveva funzionato?)

1 Mi Piace