Errores al intentar usar almacenamiento S3 personalizado

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?

Deberías intentar seguir la documentación sobre Uso de almacenamiento de objetos para cargas (S3 y clones) para tu caso de uso. Es mucho más flexible. ¡Cuando logres que funcione, puedes agregarlo también a la wiki!

2 Me gusta

Dado esto:

Entonces esto es definitivamente incorrecto:

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”.

¿De dónde sacaste la parte de “support”?

La documentación de Flexify dice:

Cambie el punto final de S3 que usa su aplicación a s3.flexify.io (o a otro nombre de host mostrado en la configuración).

Por lo tanto, no puedes usar la consola de administración para cambiarlo; en su lugar, lee el tema que menciona @falco :arrow_double_up: y comienza con:

  DISCOURSE_S3_ENDPOINT: https://s3.flexify.io
2 Me gusta

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?

@Falco @schleifer Vale, lo he probado, pero lamentablemente sigue dándome exactamente el mismo error.

Por lo tanto, creo que no funciona ni siquiera cuando se codifica directamente en app.yaml. Parece que ambos entran en el mismo flujo de código.

Esta es mi configuración de 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

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?

¿Has intentado revisar la página /logs?

Sí, pero no hay nada allí…

¿Cuál es el valor exacto que estás utilizando para la variable de entorno del endpoint?

¡Vale, encontré una configuración en Flexify.IO para establecer el modo de subdominio. Ahora funciona. :champagne:

¡Voy a actualizar la wiki!

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