Errori durante l'utilizzo dello storage S3 personalizzato

Poiché sono costantemente frustrato dai malfunzionamenti del plugin Azure Blob Storage, ho avviato un server Flexify.IO per tradurre il protocollo Azure in S3.

Tuttavia, dopo averlo configurato in Discourse, non funziona. L’errore è:

Failed to open TCP connection to support.xxx.xxx.xxx.xxx:443 (getaddrinfo: Name or service not known)

dove xx.xx.xx.xx è l’indirizzo IP del gateway S3 e support è il nome del bucket…

La cosa curiosa è… ho usato S3 Browser per testare l’endpoint e funziona perfettamente.

Quindi, potrebbe qualcuno gentilmente dirmi cosa ho fatto di sbagliato?

Posso solo pensare che sia potenzialmente dovuto alla regione, poiché la regione esposta dall’endpoint è eastasia (una regione Azure valida), ma posso scegliere solo tra le regioni AWS standard da un elenco. Tuttavia, è ancora strano perché l’errore sembra indicare un fallimento nella connessione all’endpoint stesso, e non un disallineamento della regione.

Ho la sensazione che la mia configurazione per s3_bucket sia errata, poiché sta aggiungendo il nome del bucket all’URL dell’endpoint stesso.

Dovrei invece utilizzare il formato bucket/cartella? Cosa dovrei inserire in uno dei due?

EDIT: Dal codice sorgente sembra essere hard-coded. E se il mio provider di archiviazione non usa il nome del bucket come prefisso?

Dovresti provare a seguire la documentazione su Utilizzo dell’archiviazione oggetti per i caricamenti (S3 e cloni) per il tuo caso d’uso. È molto più flessibile. Una volta che avrai fatto funzionare tutto, potrai aggiungerlo anche al wiki!

2 Mi Piace

Dato questo:

allora questo è assolutamente sbagliato:

Il messaggio di errore lo conferma. getaddrinfo: Name or service not known indica un fallimento della ricerca DNS; non esisterà mai un nome host come “support.303.303.303.303”.

Da dove hai tratto la parte “support”?

La documentazione di Flexify dice:

Cambia l’endpoint S3 che la tua applicazione utilizza in s3.flexify.io (o in un altro hostname indicato nelle impostazioni).

Quindi non puoi modificarlo tramite la console di amministrazione; invece, leggi il topic menzionato da @falco :arrow_double_up: e inizia con:

  DISCOURSE_S3_ENDPOINT: https://s3.flexify.io
2 Mi Piace

Oh, scusa. support è il nome del bucket. Posso vedere che S3 semplicemente antepone il nome del bucket al nome di dominio, e questo è assunto da Discourse.

Sì, l’avevo capito. Quindi devo codificare a mano gli endpoint in app.yaml, corretto?

@Falco @schleifer Va bene, l’ho provato, ma purtroppo mi dà esattamente lo stesso errore.

Quindi, non credo che funzioni nemmeno se è hard-coded in app.yaml. Sembra che vadano nello stesso flusso di codice.

Questa è la mia configurazione app.yaml:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: eastasia
  DISCOURSE_S3_ENDPOINT: https://??.??.??.??
  DISCOURSE_S3_ACCESS_KEY_ID: ???
  DISCOURSE_S3_SECRET_ACCESS_KEY: ???
  DISCOURSE_S3_BUCKET: support

Sta ancora cercando di accedere a support.??.??.??.??:443

Quindi, suppongo che in Discourse il bucket deba formare un sottodominio?

EDIT 1

Va bene, ho eliminato le impostazioni di app.yaml e ho creato un sottodominio con support che punta a xx.xx.xx.xx. Ora, quando carico, gira per un lungo periodo e poi restituisce un errore generico:

Aws::S3::Errors::BadRequest

C’è un modo per ottenere il messaggio di errore esatto?

Hai provato a controllare la pagina /logs?

Sì, ma non c’è nulla…

Qual è il valore esatto che stai utilizzando per la variabile d’ambiente dell’endpoint?

OK, ho trovato un’impostazione in Flexify.IO per attivare la modalità sottodominio. Ora funziona. :champagne:

Aggiornerò il wiki!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.