Поиск по сайту:

Как перенести корзину AWS S3 в другую учетную запись или сервис


Простой сервис хранения AWS (S3) отлично подходит для хранения большого количества объектов, но это также API, совместимый со многими другими конкурирующими сервисами. Если вы хотите выйти за пределы AWS, перенос корзины S3 сделать несложно.

Как это работает?

Если обе службы, в которые вы выполняете перенос, совместимы с S3, вы можете просто использовать утилиту, такую как rclone, настроенную для доступа к каждой службе, для передачи всех элементов. Например, вы можете перейти из S3 в совместимый сервис Spaces Digital Ocean или из корзины S3 в одной учетной записи в другую.

Чтобы обработать перенос, rclone прочитает из исходного сегмента, найдет все файлы, которые необходимо передать, и выполнит их клонирование в целевой сегмент. rclone также может обрабатывать обновления файлов, что может быть полезно, если исходная корзина записывается во время передачи.

Что касается времени передачи, это, вероятно, займет некоторое время в зависимости от размера корзины. Количество файлов также является проблемой, так как rclone добавляет накладные расходы на каждую передачу. Если у вас миллионы файлов или несколько терабайт, вы должны быть готовы к часам передачи.

К счастью, вы можете выполнить большой первоначальный перенос, пока в корзину все еще идет активная запись. Скорее всего, вам потребуется некоторое время простоя, чтобы обеспечить синхронизацию сегментов перед окончательным переключением. Если это проблема, есть другие инструменты, доступные для беспрепятственного переноса, включая коммерческие инструменты, такие как NetApp Cloud Sync, которые могут синхронизировать несколько сегментов вместе.

Некоторые облачные службы, такие как Google Cloud Platform, имеют собственные службы, которые могут выполнять передачу. Если вы переходите на платформу, которая поддерживает это, вы, вероятно, захотите использовать их сервис.

Настройка rclone

Самый простой способ — настроить rclone на своем сервере для обработки операции переноса. Вам нужно будет запустить его в фоновом режиме или через окно tmux, чтобы вы могли отключиться от длинных передач.

rclone доступен в большинстве менеджеров пакетов:

apt install rclone -y

rclone в основном предназначен для передачи файлов локально или между серверами, совместимыми с SSH, поэтому потребуется небольшая настройка для обработки передачи между службами S3. Этот файл находится по адресу:

~/.config/rclone/rclone.conf

Добавьте новый блок со следующей конфигурацией, которая привязывает его к вашей учетной записи AWS (а не к конкретному сегменту):

[s3]
type = s3
env_auth = false
acl = private
access_key_id = ACCESS_KEY
secret_access_key = SECRET_KEY
region = REGION
location_constraint = LOCATION_CONSTRAINT

Вам нужно будет заполнить конфигурацию своим ключом доступа и секретом, а также ввести регион вашего ведра. Список регионов можно найти в документации AWS.

Вам нужно будет заполнить еще один блок для другого сервиса, на который вы переходите. Если вы перемещаетесь между учетными записями AWS, вам потребуется отдельный ключ с доступом к этой учетной записи. Если вы переходите на такой сервис, как DO Spaces, вам нужно определить еще один блок с новой настроенной конечной точкой:

[spaces]
type = s3
env_auth = false
acl = private
access_key_id = ACCESS_KEY
secret_access_key = SECRET_KEY
endpoint = nyc3.digitaloceanspaces.com

В любом случае вам нужно будет дать ему новое имя в заголовке блока, потому что это два разных пульта.

Выполнение передачи

После настройки вы сможете просмотреть все возможные пульты

rclone listremotes

s3:
spaces:

Вы можете просмотреть содержимое корзины, используя имя конечной точки, за которым следует двоеточие и имя корзины.

rclone tree s3:source-bucket

Затем вы можете запустить синхронизацию с некоторыми дополнительными флагами для оптимальной производительности:

rclone sync source:/source-bucket 
destination:/destination-bucket 
-P -v --log-file /var/log/rclone/rclone-1.log 
--create-empty-src-dirs --s3-chunk-size 20M 
--s3-upload-concurrency 64 --checksum

Флаг -P позволит вам интерактивно просматривать ход выполнения в вашем терминале и даст оценку того, сколько времени это займет.

rclone sync просто просканирует исходную корзину и обновит целевую корзину. Вы можете продолжать изменять исходную корзину, пока передача не будет завершена. После того, как это будет сделано, вы можете запустить дополнительные передачи и продолжить синхронизацию сегментов вместе.