Навсегда восстановить Ледник до S3

Мне интересно, есть ли простой способ навсегда восстановить объекты Glacier до S3. Кажется, что вы можете восстановить объекты Glacier за определенное время, которое вы предоставляете при восстановлении на S3. Так, например, теперь у нас есть тысячи файлов, восстановленных на S3, которые вернутся в Glacier через 90 дней, но мы не хотим, чтобы они возвращались в Glacier.

2 ответа

Решение

Чтобы прояснить технические аспекты, ваши файлы не будут возвращаться в Glacier через 90 дней - потому что они все еще находятся в Glacier, но после того, как вы сделали восстановление, временные копии хранятся в хранилище с избыточным резервированием S3 (RRS).) что S3 удалит через 90 дней (или любое другое значение дня, которое вы указали при выполнении операции восстановления. Восстановление файлов не удаляет копию Glacier.

Ответ на ваш вопрос - нет, и да.

Технически вы не можете изменить объект из класса хранения Glacier обратно в стандартный или класс RRS...

Переход объектов в класс хранения GLACIER является односторонним. Вы не можете использовать правило конфигурации жизненного цикла для преобразования класса хранения объекта из GLACIER в Standard или RRS.

... тем не мение...

Если вы хотите изменить класс хранения уже заархивированного объекта на Стандартный или RRS, вы должны сначала использовать операцию восстановления, чтобы сделать временную копию. Затем используйте операцию копирования, чтобы перезаписать объект как объект Standard или RRS.

http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

Вы можете скопировать этот объект в технически новый объект, но тот, который имеет тот же ключ (путь), что и новый объект... так что для практических целей, да, вы можете.

Действие PUT/COPY обсуждается здесь: http://docs.aws.amazon.com/AmazonS3/latest/dev/ChgStoClsOfObj.html

Во-первых, восстановите из Glacier (как вы это сделали). Это делает файл доступным для копирования.

Затем, когда файл будет доступен, вы сможете скопировать/перезаписать его с помощью интерфейса командной строки AWS:

      aws s3 cp --metadata-directive "COPY" --storage-class "STANDARD" s3://my-bucket/my-image.png s3://my-bucket/my-image.png

Примечания

В приведенной выше команде:

  • The fromиtoпути к файлам совпадают (мы его перезаписываем).
  • Мы устанавливаем--metadata-directive "COPY". Это говорит о необходимости скопировать метаданные вместе с содержимым файла (документация здесь ).
  • Мы устанавливаем--storage-class "STANDARD". Это говоритcpиспользоватьSTANDARDs3 класс хранения для нового файла (документация здесь ).
  • Результатом является новый файл, это обновит дату изменения.
  • Если вы используете управление версиями, вам может потребоваться принять во внимание дополнительные соображения.

Эта процедура основана на информации из документации AWS здесь .


Масса

Если вы хотите сделать это массово (по многим файлам/объектам), вы можете использовать следующие команды:

Пробный прогон

Эта команда выведет список файлов Glacier в переданном сегменте и префиксе:

      aws s3api list-objects --bucket my-bucket --prefix some/path --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text | xargs -I {} echo 'Would be copying {} to {}'

Массовое обновление

Как только вы освоитесь со списком файлов, которые будут обновлены, выполните приведенную ниже команду, чтобы обновить их.

Перед запуском убедитесь, что сегмент и префикс соответствуют тому, что вы использовали при пробном прогоне. Также убедитесь, что вы уже выполнили стандартную операцию «восстановления» S3/Glacier для всех файлов (как описано выше).

Это объединяет команду обновления одного файла/объекта с командой list-objects в пробном прогоне с использованиемxargs.

      aws s3api list-objects --bucket my-bucket --prefix some/path --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text | xargs -I {} aws s3 cp --metadata-directive "COPY" --storage-class "STANDARD" s3://adplugg/{} s3://adplugg/{}
Другие вопросы по тегам