Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas

Hola,

Estoy un poco atascado y confundido y espero que alguien pueda ayudarme.
Primero tuve una instalación de Bitnami y me di cuenta de cuántos problemas me daría a lo largo del camino, así que reinstalé usando la instalación estándar.
Pude restaurar mi copia de seguridad y todo salió bien, a pesar de que pasé de la versión 2.8 a la beta 2.9.

Volví a probar mi copia de seguridad en mi bucket de Google y todavía funcionó a la perfección.

Tenga en cuenta que toda la configuración de S3 se realizó a través de la interfaz web y no a través de variables de entorno.

Por motivos de GDPR, creé un nuevo bucket de copia de seguridad en Europa (llamémoslo discourse-backup-eu), y ahora que pude cambiar la variable de entorno, establecí DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com, reconstruí la aplicación, cambié el nombre del bucket de copia de seguridad en la interfaz web, volví a ejecutar la copia de seguridad y me complació mucho ver que los archivos de copia de seguridad aparecían en mi nuevo bucket de copia de seguridad en Europa.

Ahora quería que las cargas fueran a otro bucket y evitar llenar el espacio en disco de mi VM.

Así que configuré un nuevo bucket (llamémoslo discourse-uploads), lo hice público, agregué el rol Storage Legacy Bucket Owner a mi cuenta de servicio en ese nuevo bucket.
Luego agregué una regla a mi balanceador de carga existente (llamémoslo https://www.example.com) para usar un bucket de backend con Cloud CDN habilitado como se indica aquí. La regla /discourse-uploads/* apunta al bucket discourse-uploads.

Probé mi CDN con un test.jpg en la raíz del bucket pero no pude acceder a él a través de https://www.example.com/discourse-uploads/test.jpg y tuve que crear una subcarpeta llamada discourse-uploads dentro del bucket, moví el test.jpg dentro y ahora puedo ver mi imagen de prueba a través de https://www.example.com/discourse-uploads/test.jpg.

En la interfaz web, cambié el nombre del bucket ficticio en “s3 upload bucket” (me vi obligado a establecerlo previamente mientras configuraba la copia de seguridad) a discourse-uploads, completé la URL de CDN con https://www.example.com/discourse-uploads y marqué “enable s3 uploads”.

A partir de ahí, si intentara cargar una imagen, recibiría una ventana emergente que decía “Argumento no válido” en la ventana del navegador (proveniente de un error 422 con un contenido JSON que dice básicamente lo mismo).

Intenté volver a procesar todas las publicaciones, pero no tuvo ningún efecto, todavía tenía el error.

Así que pensé que debería intentar usar las variables de entorno en lugar de la interfaz web.

y usé la siguiente configuración:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3

Reconstruí la aplicación.
Luego no puedo abrir discourse porque ninguno de los activos se cargó en el bucket y obtengo un 404
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js

Pensé que intentar cargar directamente en una subcarpeta del bucket directamente era un poco exagerado, aunque el OP sugiere que funciona (al menos para el bucket de copia de seguridad)

cambié la variable de entorno a
DISCOURSE_S3_BUCKET: discourse-uploads
(Pensando que más tarde podría jugar con la regla del host en lugar de tener que cargar en una subcarpeta)

y reconstruí para ver si algo se cargaba, pero nada se carga en el bucket y discourse todavía falla al abrir debido a 404.

Entonces, mis preguntas son:

  • ¿Chocan la interfaz web y la variable de entorno?
  • ¿Cuándo se supone que se cargarán los activos en el bucket?
  • ¿Cómo puedo depurar esto? No veo ningún error en los registros.
  • ¿Es posible configurar una subcarpeta de un bucket en la configuración?
  • Una vez que esto funcione, ¿se transferirán las imágenes cargadas previamente al bucket? Si vuelvo a procesar, ¿cómo se verán las URL de las imágenes cargadas previamente?

¡Gracias!

1 me gusta