Миграция старых загрузок в S3

Хотя новые загрузки корректно загружаются на Amazon S3, эта команда не может переместить старые файлы с локального хранилища на S3:

DISCOURSE_S3_BUCKET="bucketname" DISCOURSE_S3_REGION="ap-south-1" DISCOURSE_S3_ACCESS_KEY_ID="AKIchangedabitUNM2" DISCOURSE_S3_SECRET_ACCESS_KEY="rX6Pf3C_changedabit_YKKtdVrnbw6B" DISCOURSE_S3_CDN_URL="https://bucketname.s3.ap-south-1.amazonaws.com" rake uploads:migrate_to_s3

Ещё 15 дней назад эта команда работала безупречно.
Сегодня она выдаёт следующую ошибку:

Checking if default already migrated...
7 of 14 uploads are not migrated to S3. S3 migration failed for db 'default'.
1 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
Looking for missing uploads on: default

0 post uploads are missing.

No posts require rebaking
Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Please run these commands in the rails console

SiteSetting.migrate_to_new_scheme = true
Jobs::MigrateUploadScheme.new.execute(nil)

Я также выполнил эти две команды в консоли Rails, но они, похоже, не принесли никакой пользы:

SiteSetting.migrate_to_new_scheme = true
Jobs::MigrateUploadScheme.new.execute(nil)

Примечание: мои загрузки настроены для хранения в подпапке на бакете bucketname/uploads.

Есть какие-то идеи, @vinothkannans?

Возвращает ли она какие-либо ошибки? Я не вижу никаких недавних существенных изменений в коде задачи uploads:migrate_to_s3 Rake.

У меня была похожая проблема. Дело было в том, что путь к загруженным файлам не соответствовал тому, что ожидает этот тест (например, в пути чего-то отсутствовало слово ‘default’).

Что я сделал (в общих и, вероятно, не очень полезных терминах), так это посмотрел, как поиск находит эти загруженные файлы, которые считает ошибочными, и исправил их.

Мне удалось решить это случайно, и я до сих пор не уверен, как именно это произошло.

Я несколько раз менял команду, в основном добавляя или удаляя слово «dualstack» в самой команде и в поле URL CDN в настройках Discourse: https://bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com. Но это всё равно не помогало. Затем я снова случайно ввёл те же две команды (упомянутые в оригинальном посте) в консоли Rails.

И ещё один шаг, который я сделал случайно в это время, — добавил слово /uploads к имени бакета в команде.

И «случайно» (мне нужно ещё одно слово для обозначения случайности :slight_smile: ) у меня получилось.
Так что я не могу сказать, кто именно стал героем этого решения.
В любом случае, спасибо за внимание.

Какая бы ошибка ни возникала или ни отображалась, я уже указал её в своём первоначальном сообщении. Но я согласен, что эта ошибка/сообщение не очень помогли в диагностике.

Увы, сегодня снова, поскольку я не мог понять проблему при миграции, я создал 1 загрузку локально. Затем попытался перенести её обратно в S3 с помощью этой команды:

DISCOURSE_S3_BUCKET="bxyzbucket1/uploads" DISCOURSE_S3_REGION="ap-south-1" DISCOURSE_S3_ACCESS_KEY_ID="AKIAchangedBRF" DISCOURSE_S3_SECRET_ACCESS_KEY="H0P6Oo8changed1AuLkRDCQK8" DISCOURSE_S3_CDN_URL="https://bxyzbucket1.s3.ap-south-1.amazonaws.com/uploads" rake uploads:migrate_to_s3

Хотя одна новая загрузка и была перенесена в S3, но с этой ошибкой:

1 из 14 загрузок не перенесены в S3. Миграция в S3 не удалась для БД 'default'.
1 пост не переотображён на новый URL загрузки S3. Миграция в S3 не удалась для БД 'default'.

Что означает эта ошибка? Может ли она вызвать проблемы, если нужно перенести тысячи изображений из ‘Локальное хранилище >> S3’? @vinothkannans

Пожалуйста, выполните следующую команду в консоли Rails и опубликуйте результат здесь:

Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '#{GlobalSetting.relative_url_root}/uploads/default/original/_X/%'")

Извините, что я отсутствовал в этом обсуждении некоторое время.
Я выполняю команду Rails, которую вы прислали, но вывода нет:

Ошибка по-прежнему возникает: «S3 migration failed for db ‘default’».
Хотя загруженные посты и изображения отображаются корректно в моём бакете и на сайте, логотипы сайта и другие элементы (в разделе «Настройки администратора» > «Брендинг») отсутствуют, и я даже не могу обновить их новыми. Они остаются пустыми.

Я также выполнил (без ошибок): rake posts:rebake_uncooked_posts и rake posts:rebake.

@vinothkannans Даже спустя год, когда я по какой-то причине повторяю этот процесс, возникает та же ошибка.