Как перенести данные из бакета Object Storage в ледяное хранилище
Описание задачи
Необходимо перенести данные из бакета Object Storage из стандартного или холодного хранилища в ледяное хранилище.
Решение
С помощью правил жизненных циклов изменить класс хранения объектов в бакете Object Storage на ледяной не получится. Сменить класс хранения можно двумя способами:
- Через копирование объектов;
- Через установку жизненного цикла с помощью AWS CLI.
Для копирования объектов в другой бакет с помощью утилиты AWS CLI выполните следующие действия:
- Измените тип хранилища для вашего бакета на ледяное.
- Установите и настройте утилиту AWS CLI.
- Выполните команду
aws --endpoint-url=https://storage.yandexcloud.net s3 cp --recursive s3://*\$OLD_BUCKET_NAME\ s3://*\$NEW_BUCKET_NAME\
.
Совет
Замените $OLD_BUCKET_NAME
на наименование бакета-источника, а $NEW_BUCKET_NAME
– на наименование бакета-приемника в предоставленном примере.
В этом случае перемещение данных из одного типа хранилища в другое произойдет на стороне Object Storage без необходимости локальной загрузки объектов на хост с установленным AWS CLI. Также вы можете задать тип хранения для объекта с помощью опции --storage-class
в AWS CLI:
aws --endpoint-url=https://storage.yandexcloud.net s3 cp --recursive s3://*\$OLD_BUCKET_NAME\ s3://*\$NEW_BUCKET_NAME\ --storage-class GLACIER
При использовании любого из указанных вариантов смены типа хранения, у объектов в бакете изменится только тип хранилища. Дубликаты объектов в бакете в результате этой операции созданы не будут.
Для установки жизненного цикла через AWS CLI выполните следующие действия:
-
Создайте жизненный циклю с типом
transition
из веб-интерфейса Консоли управления . -
Сохраните текущую конфигурацию правил жизненного цикла в файл
lifecycles.json
утилитой AWS CLI:aws s3api get-bucket-lifecycle-configuration \ --endpoint-url=https://storage.yandexcloud.net \ --bucket <$BUCKET_NAME> > lifecycles.json
Замените
$BUCKET_NAME
на наименование вашего бакета Object Storage в предоставленном примере. -
Отредактируйте полученный файл
lifecycles.json
, указав тип храненияICE
вместоCOLD
. -
Примените новую конфигурацию с помощью утилиты AWS CLI:
aws s3api put-bucket-lifecycle-configuration \ --bucket <$BUCKET_NAME> \ --endpoint-url=https://storage.yandexcloud.net \ --lifecycle-configuration file://lifecycles.json
Замените
$BUCKET_NAME
на наименование вашего бакета Object Storage в предоставленном примере.