Após instalar o Discourse (2.7.0.beta1) e importar posts antigos do Google Groups, adicionei a configuração de bucket/chave do S3 (mas sem URL de CDN) e executei
rake uploads:migrate_to_s3
que parecia estar funcionando muito bem. Todas as imagens foram enviadas para o S3 e o Discourse tentava acessá-las por meio de uma URL do S3 gerada automaticamente — algo como
https://ortus-discourse.s3.dualstack.us-west-2.amazonaws.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
Depois, renomeei o bucket (para ortus-discourse-uploads) e configurei uma distribuição do Cloudfront na frente dele, com um CNAME configurado no Cloudflare chamado
https://communitycdn.ortussolutions.com/
O CNAME, o Cloudfront e o S3 estão todos funcionando perfeitamente. URLs como esta servem corretamente uma das imagens do bucket:
https://communitycdn.ortussolutions.com/original/1X/75747ca17a3ca01f298f836691e1990916bafccb.png
No entanto, o problema é que o Discourse está completamente travado no antigo domínio ortus-discourse.s3.dualstack.us-west-2.amazonaws.com (que não funciona devido à renomeação do bucket) e, não importa quantas vezes eu reconstrua o contêiner ou reasse os posts antigos, não consigo, de forma alguma, fazer o Discourse usar a nova URL de CDN. Pesquisei no Google por um dia sobre isso e reassei provavelmente uma dúzia de vezes (dentro do contêiner app) com várias configurações. Cada tópico do fórum dá o mesmo conselho — reconstruir e reassar —, mas não está funcionando.
Não são apenas as imagens nos posts que estão quebradas; até mesmo o <link rel="icon" type="image/png" href=""> e o logotipo do site estão presos ao domínio antigo e não estão usando a URL de CDN do S3.
Aqui estão minhas configurações atuais do 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
Até tentei remapear a URL antiga para a nova nos posts, assim:
rake posts:remap["ortus-discourse.s3.dualstack.us-west-2.amazonaws.com","communitycdn.ortussolutions.com"]
mas o comando informou que 0 posts foram afetados.
Em lugar nenhum das minhas variáveis de ambiente ou configurações do banco de dados há qualquer referência ao nome antigo do bucket ortus-discourse, então não consigo entender de onde o Discourse está obtendo essa informação. Sou novo no Discourse e não sou desenvolvedor Ruby, então não investiguei além do que consigo ver no meu app.yml, na interface administrativa e na saída dos comandos rake que encontrei nos fóruns.