Продолжение обсуждения из темы Как перенести бакет загрузки S3 от одного провайдера к другому?:
Я пытаюсь перенести данные из бакета GCP в бакет AWS S3. В старой системе не использовался CDN для S3 (человек, который её настраивал, судя по всему, не очень понимал, что делает).
Я использовал s3cmd для синхронизации старого бакета GCP с локальной файловой системой, а затем снова применил его для загрузки файлов в новый бакет S3. Система теперь правильно настроена с использованием S3 и CDN сайта, как описано в теме Использование объектного хранилища для загрузок (S3 и клоны).
В связанной выше теме предлагалось использовать команду rake posts:remap для обновления постов (полагаю, мне также следует пересобрать все посты? Или хотя бы те, которые относятся к старому бакету?).
При выполнении posts:remap было обновлено только одно сообщение.
Upload.order(Arel.sql('RANDOM()')).limit(10).pluck(:id, :url)
показывает, что все они содержат ссылку на старый бакет… Ага, вот в чём проблема. Нам нужна не команда rake posts:remap, а discourse remap, как описано здесь: Change the domain name or rename your Discourse.
Да, я так думаю.
Я постараюсь сделать это в самое ближайшее время. @Falco, в общих чертах процесс выглядит примерно так:
- создать новый бакет и CDN для него, пересобрать контейнер, чтобы использовать новый бакет/CDN, и убедиться, что всё работает;
- настроить
s3cmdдля старого бакета и синхронизировать данные с локальной системой; - настроить
s3cmdдля нового бакета и загрузить данные в новый бакет; - выполнить
discourse remap OLD-BUCKET-DOMAIN-NAME NEW-BUCKET-DOMAIN-NAME; - пересобрать (rebake).
Кажется, всё верно?
Если использовать один и тот же CDN для старого и нового бакета, возможно, удастся избежать пересборки (rebake), но правильно синхронизировать этот процесс довольно сложно (нельзя изменить источник CDN, пока данные не будут загружены в новый бакет, но при этом нужно как-то убедиться, что в процессе синхронизации ничего не было загружено в старый бакет?) — возможно, стоит просто указать, что такой вариант возможен.