Hola. Acabamos de migrar de Discourse EC2 a Discourse ECS (servicio de contenedores). Cuando estábamos en EC2, la carga en S3 aún no estaba configurada. Antes de la migración, copiamos todas las imágenes desde EC2 al bucket de S3 (con acceso público). Sin embargo, tras realizar la migración con la carga en S3 habilitada (sin CDN todavía), notamos que las imágenes (y los avatares) no se cargaban en absoluto.
También notamos la diferencia entre las URLs de las imágenes (Discourse aún utilizaba las URLs de «cargas locales en EC2»).
Este es el enlace en S3: https://[s3-bucket].s3.amazonaws.com/original/1X/831092e27d6c066c3618a587a5c378e1c794f2c6.png
Enlace en Discourse (la URL sigue siendo de las cargas de EC2): https://[domain]/uploads/default/original/1X/831092e27d6c066c3618a587a5c378e1c794f2c6.png
El error en el navegador es: 404 NO ENCONTRADO
¿Cómo configuramos Discourse para que utilice las URLs correctas de S3 para las imágenes?
Solo quería preguntar: ¿esto debe ejecutarse únicamente en EC2? ¿Existe otra forma de migrar las cargas o actualizar las URLs de las imágenes? Actualmente, la instancia de EC2 está detenida y la configuración actual de ECS ya utiliza el dominio y la base de datos/caché, por lo que no estoy seguro de si podemos volver a apuntar el dominio y la base de datos/caché a la antigua EC2 (y luego reconstruir) sin tiempo de inactividad. Gracias.
Querrás ejecutar el comando en una instancia que tenga acceso a las imágenes. Ah, pero si las moviste manualmente a S3, entonces quizás debas realizar algunos ajustes en la tabla de uploads.
He estado trabajando en una guía con instrucciones para mover datos de un bucket a otro que podrías usar para resolver tu problema, aunque deberás modificar esas instrucciones para tener en cuenta tus cambios de local a bucket en lugar de de bucket a bucket.
Si te cobrara una tarifa plana por el trabajo, probablemente cobraría por 4 horas, aunque si pagaras por hora, podría ser solo una.
¡Oh! Lo siento. Acabo de notar esto. Si la instancia EC2 está utilizando la misma base de datos, entonces quizás puedas volver a levantarla (dejando el ECS en su lugar) y ejecutar la tarea migrate-to-s3 allí; primero necesitarás colocar todo lo relacionado con S3 en variables de entorno, tal como se describe en Uso de almacenamiento de objetos para cargas (S3 y clones). Esta es probablemente la solución más sencilla. Recomiendo realizar una copia de seguridad solo de la base de datos antes de comenzar.