O backup possui muitos diretórios e subdiretórios. Acredito que seja necessário copiar os arquivos contidos nos diretórios de ambos os buckets, de forma recursiva, para o local correspondente no servidor local. Por exemplo, todo o conteúdo dos diretórios 1X e 2X de ambos os buckets deve ser copiado para os diretórios 1X e 2X no servidor local. Não tenho certeza quanto a isso, mas é o que acredito.
Pode confirmar se todos os arquivos foram copiados corretamente?
Sim, entendi perfeitamente e garanti que seus caminhos relativos permaneçam exatamente os mesmos.
Por exemplo, se um arquivo existia anteriormente em: //bucket1/uploads/original/2x/f/filename.jpg
e o outro em: //bucket2/uploads/original/1x/a/filename.png
Agora, ambos também existem em: /var/discourse/shared/web_only/uploads/default/original/2x/filename.jpg e ../original/1x/a/filename.png
Problemas
Antes de copiar o conteúdo do bucket para o servidor local, percebi que algumas das minhas imagens apareciam apenas como ícones, e a imagem completa só podia ser visualizada pelo visitante do site ao clicar nesse ícone.
E depois que copiei (não movi) todo o conteúdo do bucket para o local mencionado acima no meu servidor local (mantendo os caminhos relativos intactos) e executei o comando discourse remap:oldurl-or-path new-url-or-path,
Nada mudou visivelmente no site. Mas, em seguida, executei o comando rake posts:rebake,
E até mesmo os ícones das minhas imagens desapareceram, e nenhum URL/caminho aparecia quando passava o ponteiro do mouse sobre o espaço vazio do marcador de posição da imagem.
Você precisa fornecer o caminho correto ao fazer o remapeamento, caso contrário, pode quebrar. Eu remapeei manualmente um link do S3 a partir da saída de exemplo que você forneceu anteriormente e funcionou.
Você pode verificar uma postagem de exemplo do meu site aqui (a postagem está em hindi, mas você pode encontrar facilmente o pequeno ícone da imagem no meio da postagem). A imagem completa só aparece se clicar no pequeno ícone.
No entanto, se eu remapear e depois recompilar, esse ícone também desaparece completamente. E não há mais nenhuma maneira para o visitante ver a imagem.
Parece que você já usou o CloudFront para cache anteriormente. Limpe o cache do seu navegador e tente novamente.
Se você fez alguma configuração no CloudFront, acho melhor desfazer todas essas configurações.
Agora, estou recebendo os mesmos links do CloudFront. Parece que você ativou o AWS CloudFront para seu site. O CloudFront está armazenando em cache as imagens no seu bucket. Acredito que você precise remover a distribuição do CloudFront. Você precisa fazer login na sua conta AWS para verificar se a distribuição do CloudFront está ativa?
Eu nunca usei o CloudFront (ou qualquer outra CDN) na AWS ou no front-end. Embora, há cerca de 2 anos, tenha usado o CloudFlare por um mês ou mais, mas depois o removi definitivamente.
Também não escolhi o CloudFront na AWS. Então, essa questão nem se aplica.
Além disso, no meu PC, quando abro as imagens, elas mostram os endereços do bucket da AWS, e não de nenhuma outra CDN.
Você está apenas sugerindo que eu remapeie os caminhos das imagens (da URL do bucket S3 para o caminho do servidor local) e, em seguida, refaça o bake.
Mas, como mencionei acima, já fiz isso e descobri que isso agrava o problema. (além disso, após o rebake, a opção ‘Restaurar’ também não funciona e é difícil reverter).
Vou tentar novamente, com o máximo de cuidado possível.
Mas eu estava procurando algum método que me permitisse entender o que está acontecendo nos bastidores. Pelo menos com uma amostra de post, eu queria ver quais posts estão mapeados para quais buckets e em que confusão estou.
De qualquer forma, vou tentar novamente e avisar aqui. Obrigado mais uma vez.
O caminho que você especificou no seu mapeamento anterior será refletido na saída do comando abaixo. Como ambos os buckets ainda estão presentes, acredito que seu mapeamento anterior pode ter falhado. De qualquer forma, agora a decisão é sua. Espero que você encontre sua solução em breve. Boa sorte.
./launcher enter app
rails c
Upload.all.sample(2000).pluck(:url)
Passo 3 - Reassove os posts e reconstrua o aplicativo:
rake posts:rebake
exit
./launcher rebuild app
Passo 4 - Desative o S3
Desative os uploads S3 nas configurações (ou no seu app.yml, se configurou dessa forma). Se você estiver usando um CDN, remova também o link dele da configuração (caso contrário, ele não será realmente desativado).
Desative seu container. Fiz isso movendo o conteúdo para um novo container como backup como etapa inicial.
Ufa! Feito. Até agora, não encontrei nenhum problema. Vá e teste!
Bom trabalho! Acredito que foram esses os passos que, no final, me ajudaram a ter sucesso, mas eu fiz muitos remaps diferentes que não funcionaram tão bem! É ótimo ter instruções formalizadas.