Después de instalar Discourse (2.7.0.beta1) e importar publicaciones antiguas de Google Groups, agregué la configuración del bucket/clave de S3 (pero sin URL de CDN) y ejecuté
rake uploads:migrate_to_s3
lo cual parecía funcionar perfectamente. Todas las imágenes se subieron a S3 y Discourse intentaba acceder a ellas mediante una URL de S3 generada automáticamente, algo así como
https://ortus-discourse.s3.dualstack.us-west-2.amazonaws.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Luego renombré el bucket (a ortus-discourse-uploads) y configuré una distribución de Cloudfront frente a él con un CNAME configurado en Cloudflare llamado
https://communitycdn.ortussolutions.com/
El CNAME, Cloudfront y S3 funcionan perfectamente. URLs como esta sirven correctamente una de las imágenes del bucket:
https://communitycdn.ortussolutions.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Sin embargo, el problema es que Discourse está completamente atascado en el antiguo dominio ortus-discourse.s3.dualstack.us-west-2.amazonaws.com (que no funciona debido al cambio de nombre del bucket) y, sin importar cuántas veces reconstruya el contenedor o vuelva a hornear las publicaciones antiguas, no puedo lograr que Discourse use la nueva URL de CDN. He buscado en Google durante un día y he vuelto a hornear probablemente una docena de veces (dentro del contenedor app) con diversas configuraciones. Cada hilo del foro da el mismo consejo: reconstruir y volver a hornear, pero no funciona.
No solo están rotas las imágenes en las publicaciones; incluso la etiqueta <link rel="icon" type="image/png" href=""> y el logotipo del sitio están atascados en el antiguo dominio y no usan la URL de CDN de S3.
Aquí están mis configuraciones actuales de S3.
DISCOURSE_S3_ACCESS_KEY_ID: '********'
DISCOURSE_S3_SECRET_ACCESS_KEY: '******'
DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_ENABLE_S3_UPLOADS: true
DISCOURSE_S3_BUCKET: 'ortus-discourse-uploads'
DISCOURSE_S3_UPLOAD_BUCKET: 'ortus-discourse-uploads'
DISCOURSE_S3_BACKUP_BUCKET: 'ortus-discourse-backups'
DISCOURSE_S3_REGION: 'us-west-2'
DISCOURSE_S3_CDN_URL: https://communitycdn.ortussolutions.com
DISCOURSE_CDN_URL: https://community.ortussolutions.com
Incluso intenté volver a mapear la URL antigua a la nueva en las publicaciones de la siguiente manera:
rake posts:remap["ortus-discourse.s3.dualstack.us-west-2.amazonaws.com","communitycdn.ortussolutions.com"]
pero el comando indicó que 0 publicaciones fueron afectadas.
En ninguna parte de mis variables de entorno ni en la configuración de la base de datos tengo nada que haga referencia al antiguo nombre del bucket ortus-discourse, por lo que no puedo entender de dónde sigue obteniendo Discourse esa información. Soy nuevo en Discourse y no soy desarrollador de Ruby, así que no he profundizado más allá de lo que puedo ver en mi archivo app.yml, la interfaz de administración y la salida de los comandos rake que he encontrado en los foros.