Como estoy constantemente frustrado por los fallos del plugin Azure Blob Storage, he ejecutado un servidor Flexify.IO para traducir el protocolo de Azure al de S3.
Sin embargo, después de configurarlo en Discourse, no funciona. El error es:
Failed to open TCP connection to support.xxx.xxx.xxx.xxx:443 (getaddrinfo: Name or service not known)
donde xx.xx.xx.xx es la dirección IP de la puerta de enlace S3 y support es el nombre del bucket…
Lo curioso es que he usado S3 Browser para probar el punto final y funciona perfectamente.
¿Podría alguien amable decirme qué he hecho mal?
Solo puedo ver que podría deberse a la región, ya que la región expuesta por el punto final es eastasia (una región válida de Azure), pero solo puedo elegir entre las regiones estándar de AWS en una lista. No obstante, sigue siendo extraño porque el error parece indicar un fallo al conectarse al propio punto final, y no una incompatibilidad de región.
Tengo la sensación de que mi configuración para s3_bucket es incorrecta, ya que está agregando el nombre del bucket a la URL del endpoint en sí.
¿Debería usar el formato bucket/carpeta en su lugar? ¿Qué debería poner en cada uno?
EDITO: Según el código fuente, parece estar codificado de forma rígida. ¿Qué pasa si mi proveedor de almacenamiento no utiliza el nombre del bucket como prefijo?
El mensaje de error lo indica claramente. getaddrinfo: Nombre o servicio no conocido es un fallo en la consulta DNS; nunca habrá un nombre de host como “support.303.303.303.303”.
Oh, lo siento. support es el nombre del bucket. Puedo ver que S3 simplemente anteponga el nombre del bucket al nombre de dominio, y Discourse lo asume.
Sí, ya lo había deducido. Entonces debo codificar los puntos finales directamente en app.yaml, ¿correcto?
Aún está intentando acceder a support.??.??.??.??:443.
Así que, supongo que en Discourse el bucket debe formar un subdominio?
EDICIÓN 1
Bien, he eliminado la configuración de app.yaml y he creado un subdominio con support que apunta a xx.xx.xx.xx. Ahora, al subir, tarda mucho en cargar y luego devuelve un error genérico:
Aws::S3::Errors::BadRequest
¿Hay alguna manera de obtener el mensaje de error exacto?