Как перенести бакет для загрузки S3 от одного провайдера к другому?

Я изначально настроил бакет для загрузки на AWS, но теперь хочу использовать Linode. Настройка прошла успешно, и я вижу, что изображения уже загружаются в Linode.

Однако при просмотре старых постов ссылки по-прежнему ведут на AWS. Как мне перенести эти изображения в Linode, чтобы я мог удалить бакет на AWS?

Спасибо!

Сначала синхронизируйте бакеты с помощью соответствующего программного обеспечения (aws cli, s3cmd и т. д.), а затем выполните замену строки во всех сообщениях

Я только что выполнил

rake posts:remap["https://royaleapi-discuss-uploads.s3.dualstack.ap-northeast-1.amazonaws.com/","https://royaleapi-discuss-upload.ap-south-1.linodeobjects.com/"]

но получил сообщение 0 posts remapped.

При этом я вижу, что URL указан верно, например, посмотрев на ссылку изображения здесь:

https://discuss.royaleapi.com/t/idea-for-season-21-the-archers-time/320

Попробуйте

rake posts:remap["//royaleapi-discuss-uploads.s3.dualstack.ap-northeast-1.amazonaws.com/","//royaleapi-discuss-upload.ap-south-1.linodeobjects.com/"]

Попробовал ваше предложение. Также попробовал

rake posts:remap["royaleapi-discuss-uploads.s3.dualstack.ap-northeast-1.amazonaws.com","royaleapi-discuss-upload.ap-south-1.linodeobjects.com"]

Получил тот же результат:

Remapping

0 posts remapped!

Есть ли другая команда, чтобы найти все посты, в которых ничего не заменяется, чтобы проверить, может ли команда вообще находить корректные совпадения?

Вы хотите проверить объекты Upload:

cd /var/discourse
./launcher enter app
rails c
Upload.order(Arel.sql('RANDOM()')).limit(10).pluck(:id, :url)

Отличный вопрос и совет. Не стоит ли сделать из этого #инструкцию?