Мы используем S3 для хранения миллионов записей в нашем веб-приложении, теперь мы перемещаем все это на серверы EC2, EU, и мы также хотим переместить эти данные S3 в EU. Но корзина, которую мы используем, находится в США, и, похоже, нет инструмента для перемещения всего содержимого корзины в другую корзину.
Также существует проблема относительно того, как синхронизировать данные позже, когда мы переключаемся на ведро ЕС, данные, которые будут созданы во время миграции.
Новый чиновник AWS CLI изначально поддерживает большую часть функций s3cmd
.
http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2
Думаю, можно запустить:
s3cmd --recursive cp s3://oldbucket/ s3://newbucket
Он должен скопировать его напрямую.
Я не знаю упакованного решения для этого, но, по сути, это просто СПИСОК ведра, а затем PUT-копирование каждого объекта из ведра США в ведро ЕС. API PUT-copy поддерживает «if-modified-Since» и «if-none-match», поэтому вы можете запускать его несколько раз без дублирования усилий: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/API/index.html?RESTObjectCOPY.html
Для живой миграции я бы предложил следующий подход:
Вы можете использовать хранилище S3 с уменьшенной избыточностью в своей корзине ЕС во время миграции, чтобы получить более низкие скорости передачи данных и более быстрое время отклика, поскольку данные являются просто копией данных из США.
Вы также можете рассмотреть возможность настройки межрегиональной репликации, которая позволяет копировать и синхронизировать данные между регионами. https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/
Я проделал довольно много работы с S3 и никогда не встречал инструмента, который бы делал это изначально. Однако было бы не так уж сложно использовать пару s3cmd-sync сценарии синхронизации, чтобы два сегмента были синхронизированы друг с другом.