Problema
En backends compatibles con S3 que no admiten ACL por objeto, secure_uploads no puede coexistir con contenido servido públicamente.
Parece que los avatares y los activos del tema/sitio se sirven mediante URLs directas y no autenticadas de S3, lo cual requiere lectura pública en el objeto. Pero el mismo bucket contiene cargas seguras de publicaciones que deberían permanecer privadas en mi configuración deseada, y ambos (archivos públicos y privados) comparten los mismos prefijos de ruta (original/..., optimized/...). Sin ACL por objeto, no hay forma de hacer que los archivos públicos sean públicos y los demás privados.
Mi situación actual: los avatares y activos están rotos (el bucket es privado → 403 para esos archivos), mientras que las cargas seguras de publicaciones funcionan correctamente a través del proxy /secure-uploads/.
El conflicto central
Las cargas seguras requieren una ruta de lectura autenticada; los avatares/activos requieren una ruta no autenticada. Ambos se encuentran detrás del mismo límite a nivel de bucket, que no puede distinguirlos sin ACL por objeto.
Soluciones solicitadas
- Servir avatares/activos mediante URLs presignadas cuando el bucket es privado y las ACL están desactivadas, utilizando el mismo mecanismo que las cargas seguras. Desde mi perspectiva, esto también podría funcionar solo para usuarios iniciados sesión en escenarios con una instancia de Discourse no pública.
- Admitir buckets o prefijos separados para activos públicos frente a cargas seguras, de modo que el límite de acceso se alinee con el límite público/privado y se puedan crear ACL adecuadas.
¿Es viable alguno de estos enfoques, o hay alguna ruta admitida que haya pasado por alto?