Consulta sobre el soporte de Discourse para el almacenamiento de Amazon S3

Me gustaría preguntar sobre un problema técnico relacionado con la compatibilidad de Discourse con el almacenamiento de Amazon S3.

Me encontré con una publicación de foro de 2013 que ya discutía la compatibilidad de S3 con Discourse. También encontré algunos hilos relacionados con la descarga de CDN, pero no parece haber mucha información detallada sobre este tema.

He creado un foro de Discourse y he sido muy persistente en habilitar las cargas de video. Se me han ocurrido muchas ideas, pero como no soy programador, ha sido difícil ponerlas en práctica; siempre necesito la ayuda de otros para progresar poco a poco.

El propio Discourse admite cargas de video pequeñas y ya he habilitado esa función. Sin embargo, la arquitectura de Discourse no es realmente adecuada para manejar cargas de video de manera eficiente. Después de mucha investigación, descubrí que es posible usar el almacenamiento de Amazon S3 junto con la descarga de CDN, o alternativamente, almacenamiento S3 con una configuración de caché proxy.

De hecho, ya le pedí a un amigo que me ayudara a configurar el almacenamiento S3 y el almacenamiento en caché proxy. (Para aclarar, no consideré usar una CDN debido a preocupaciones de costos; el servicio de CDN de Amazon S3 puede ser bastante caro).

Ahora me enfrento a un problema: durante las pruebas, aunque el almacenamiento S3 se ha configurado correctamente y, en teoría, todas las cargas del foro deberían ir directamente a S3, los archivos de video aún no se pueden cargar en el almacenamiento S3.

¿Alguien podría explicar qué podría estar mal configurado o qué podría estar causando este problema?

Gracias

¿Qué sucede en su lugar? ¿Recibe un mensaje de error?

También podría querer revisar la configuración “tamaño máximo de archivo adjunto en KB” y “extensiones autorizadas”, ambas en Configuración del sitio - Archivos.

Tenga en cuenta que incluso con CDN y S3, esta configuración todavía no es muy adecuada para videos, ya que no hay transcodificación para ofrecer el mejor ajuste al ancho de banda y la resolución de los clientes.

3 Me gusta


Muchas gracias por tu respuesta. Esta es la situación:
En este momento, las imágenes de mi foro se pueden cargar correctamente en S3, pero los videos no. Me resulta muy confuso.

Aunque entiendo que S3 podría no ser ideal para manejar videos, el contenido principal del foro es texto e imágenes. La función de video es solo para satisfacer las necesidades de algunos usuarios, y los videos en sí no serán muy grandes. Muchas gracias por el recordatorio.

Olvidaste responder mi pregunta :slight_smile:

3 Me gusta

La CDN de Amazon es más barata que la salida de los buckets de S3. Definitivamente quieres una CDN delante de tu bucket de S3.

Sospecho que el error del que no nos has hablado tiene que ver con que los videos son demasiado grandes. Hay configuraciones para cambiar eso, pero podría ser mejor habilitar Habilitar cargas directas a S3.

3 Me gusta


Cuando intento subir un video a mi foro, ahora aparece directamente el mensaje:

“Lo sentimos, ese archivo es demasiado grande (el tamaño máximo es de 50 MB). ¿Por qué no subes tu archivo grande a un servicio de almacenamiento en la nube y luego pegas el enlace?”

Sin embargo, mi video en sí solo tiene 10 MB. Actualmente, estoy utilizando almacenamiento S3 con CloudFront CDN para la entrega.

Me resulta muy difícil solucionar problemas. ¿Podrías proporcionar el procedimiento correcto asumiendo que no se realizaron operaciones previas? Le pediré a mi amigo que siga los pasos correctos y lo intente de nuevo.

Hola, gracias por tu respuesta.

Ya le he pedido a mi amigo que cambie del método de almacenamiento S+ con caché proxy al método de almacenamiento S3 + entrega CDN CloudFront. Sin embargo, parece que ha fallado y aún no conozco la razón. Así que me preguntaba si podrías proporcionar los comandos de ejecución exactos para que mi amigo pueda intentarlo de nuevo.

Además, soy muy persistente en tener funcionalidad de video en mi foro para la comodidad de mis usuarios. Así que se me ocurrió una nueva idea y me gustaría saber si es factible; realmente espero tu opinión.

Primero, debo explicar que no tengo absolutamente ningún conocimiento de codificación o programación. Mi especialidad universitaria fue japonés, así que aparte de aprender el idioma japonés, realmente no tengo ninguna comprensión del código. Si algunas de mis ideas parecen ingenuas a primera vista, por favor perdónenme.

Gracias al servidor que alquilé para mi foro que se cerró, tuve que invertir esfuerzo en reconstruirlo, lo que me permitió aprender los puntos clave del almacenamiento S3 y la CDN CloudFront. Luego, apliqué este conocimiento y me pregunté si existen otros proveedores de servicios de almacenamiento y CDN. Consulté a ChatGPT y me alegré de obtener las respuestas que quería.

En realidad, siempre había querido construir un sitio web de videos, pero lo abandoné rápidamente debido a los costos del disco duro. Ahora que conozco la nueva solución, he reavivado la idea de construir un sitio web de videos para soportar los videos del foro Discourse.

Según la recomendación de GPT, aprendí que puedo usar PeerTube o MediaCMS para el sistema del sitio web de videos, ambos son excelentes.

Actualmente tengo dos puntos de duda:

Primer punto: Ambos sistemas de sitios web de videos pueden soportar el almacenamiento Backblaze B2 con entrega CDN Cloudflare. Dado que los videos no se almacenan en mi propio disco duro, la reproducción del sitio web de videos ya llama a la API de Backblaze B2. Lo que quiero es que el foro se conecte al sitio web de videos, no publicando enlaces, sino utilizando el botón de carga del foro para llamar directamente a mi sitio web de videos MediaCMS (por ejemplo) como fuente. Esto significaría dos llamadas a la API:

  1. El foro llama al sitio web de videos MediaCMS.
  2. El sitio web de videos MediaCMS llama al almacenamiento Backblaze B2.

Me gustaría saber si tales llamadas repetidas a la API son técnicamente factibles.

Segundo punto: Si el sistema del foro y el sistema del sitio web de videos pueden compartir el sistema de cuentas de usuario, para que los usuarios puedan usar la misma cuenta. Esto afecta cómo funcionarían las llamadas a la API.

  • Opción 1: Como administrador del sitio web de videos, registro una cuenta de administrador vinculada al foro. Cuando el foro carga un video a través de la API, técnicamente es el administrador quien lo carga en el sitio web de MediaCMS.
  • Opción 2: Con un sistema de cuentas de usuario compartido, la carga de videos la realiza la cuenta del propio usuario en el foro, y a través de la API se sincroniza con el sitio web de MediaCMS. Entonces el usuario puede ver el video subido bajo su propia cuenta en el sitio web de videos.

He consultado a GPT sobre estos enfoques, y GPT generalmente dio comentarios positivos. Sin embargo, desafortunadamente, en usos repetidos, descubrí que GPT puede proporcionar orientación y ayuda con decisiones de alto nivel, pero para respuestas detalladas, a veces puede ser inexacto. Dado que no tengo conocimientos de codificación, no estoy seguro de si estas ideas son realmente factibles.

Si es posible, agradecería enormemente si pudieras señalar qué partes de estas ideas son factibles y cuáles podrían no serlo.

Probablemente deberían participar en este tema, entonces. ¿Siguieron Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas y pusieron la configuración en el archivo ymll y agregaron la parte que envía los activos a S3?

Tal vez el navegador de alguna manera no está comunicando el tamaño apropiadamente.

¿Probaste esto?


Hola. En realidad, esta es la situación:
Los videos de menos de 10 MB se pueden subir a mi propio servidor, pero los archivos de video en sí no se pueden subir a S3.
Al subir un video, el sistema captura automáticamente el primer fotograma como miniatura, y la imagen en miniatura se puede subir a S3.

Sin embargo, para videos de más de 10 MB, no se puede subir nada en absoluto.

Si tu amigo hubiera seguido Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas, no verías enable_s3_uploads. No está claro si la configuración de esos en la base de datos en lugar de ENV es parte del problema.

Eso no es lo mismo que Enable direct S3 uploads . Eso es “Habilitar cargas directas a S3”.

También necesitas cambiar Max image size KB y Max attachment size KB .

Pero cambié mi carga máxima a 100 MB e intenté subir un archivo de 37 MB y obtuve el error “el archivo es demasiado grande”, así que puede que tengas razón en que hay un error. No he actualizado el sitio donde probé en mucho tiempo.

1 me gusta

¿Lo cambiaste también en app.yml?

Muchas gracias por toda tu ayuda.
Dijo que había seguido las instrucciones en Configure an S3 compatible object storage provider for uploads, pero no funcionó.
Sin embargo, justo ahora, después de que hizo lo mismo que sugeriste y cambió el tamaño máximo del archivo de carga a 100 MB, el video se cargó correctamente en el almacenamiento S3.
¡Muchas gracias!

Entonces lo hizo mal y debería haber pedido ayuda. Probablemente omitió la parte que carga los activos a S3.

¡Estupendo! Hay un tema en algún lugar sobre cómo aumentar ese límite de 100 MB también.

1 me gusta