Здравствуйте. Мы только что мигрировали с Discourse EC2 на Discourse ECS (контейнерный сервис). Когда мы были на EC2, загрузка в S3 ещё не была настроена. Перед миграцией мы скопировали все изображения с EC2 в бакет S3 (с публичным доступом). Однако после миграции с включённой загрузкой в S3 (без CDN) мы заметили, что изображения (и аватары) вообще не загружаются.
Хотел уточнить: запускать это нужно только в EC2? Есть ли другой способ миграции загруженных файлов или обновления ссылок на изображения? В данный момент экземпляр EC2 остановлен, а текущая настройка ECS использует домен, базу данных и кэш, поэтому я не уверен, можно ли без простоя перенаправить домен, базу данных и кэш обратно на старый EC2 (а затем выполнить пересборку). Спасибо.
Вам нужно будет выполнить команду на экземпляре, имеющем доступ к изображениям. Но если вы переместили их в S3 вручную, возможно, вам придется внести изменения непосредственно в таблицу uploads.
Я работаю над инструкцией по переносу данных из одного бакета в другой, которая может помочь решить вашу проблему. Однако вам потребуется адаптировать эти инструкции под вашу ситуацию: перенос с локального хранилища в бакет, а не из бакета в бакет.
Если бы я брал с вас фиксированную плату за эту работу, я бы, вероятно, рассчитал её на 4 часа, хотя при почасовой оплате это могло бы занять всего один час.
Ой! Извините, я только что это заметил. Если EC2 использует ту же базу данных, вы, возможно, сможете снова запустить его (оставив ECS без изменений) и выполнить задачу migrate-to-s3 на нём. Для этого сначала нужно добавить все переменные окружения, связанные с S3, как описано в статье Использование объектного хранилища для загрузок (S3 и клонирование). Это, скорее всего, самое простое решение. Перед началом я рекомендую сделать резервную копию только базы данных.