Облачная платформаEvolution

Управлять версиями в версионируемом бакете


  • просматривать список существующих версий;

  • восстанавливать версии;

  • помечать объекты как удаленные;

  • восстанавливать объекты, помеченные как удаленные.

  • удалять версии безвозвратно.

Работать с версиями объектов можно с помощью AWS S3 API и сторонних инструментов. Инструкции ниже описывают управление версиями через AWS CLI и AWS S3 API.

Получить список версий

Чтобы получить список версий объектов в бакете:


Выполните команду:

aws s3api list-object-versions \
--bucket <bucket_name> \
--endpoint-url https://s3.cloud.ru

Где <bucket_name> — название бакета.

Восстановить версию

Чтобы восстановить версию:


  1. Получите список версий объектов бакета и выберите versionId версии, которую нужно восстановить.

  2. Скопируйте объект из версии-источника в тот же бакет с тем же ключом:

    aws s3api copy-object \
    --endpoint-url https://s3.cloud.ru \
    --bucket <bucket_name> \
    --copy-source <bucket_name>/<object_key>?versionId=<version_id> \
    --key <object_key>

    Где:

    • <bucket_name> — название бакета.

    • <object_key> — ключ объекта. В полях --copy-source и --key укажите один и тот же ключ.

    • <version_id> — идентификатор версии объекта, которую нужно восстановить.

Скопированная версия будет восстановлена как текущая. Предыдущая версия будет доступна для восстановления.

Пометить объект как удаленный

Чтобы пометить объект как удаленный, выполните DELETE-запрос без указания версии объекта.


Выполните команду:

aws s3api delete-object \
--endpoint-url https://s3.cloud.ru \
--bucket <bucket_name> \
--key <object_key>

Где:

  • <bucket_name> — название бакета.

  • <object_key> — ключ объекта, который нужно пометить как удаленный.

Для объекта будет создан delete-маркер. Объект будет скрыт, но его данные не будут удалены — их можно будет восстановить. Чтобы восстановить объект, удалите delete-маркер.

Восстановить объект, помеченный как удаленный

Чтобы восстановить объект, помеченный как удаленный, удалите delete-маркер:


  1. Получите список версий объектов бакета и найдите versionId delete-маркера.

  2. Удалите delete-маркер, указав его versionId:

    aws s3api delete-object \
    --endpoint-url https://s3.cloud.ru \
    --bucket <bucket_name> \
    --key <object_key> \
    --version-id <delete_marker_version_id>

    Где:

    • <bucket_name> — название бакета.

    • <object_key> — ключ объекта.

    • <delete_marker_version_id> — идентификатор версии delete-маркера.

Предыдущая версия объекта станет текущей и будет доступна в выводе методов ListObjectsV2, GetObject, HeadObject и т. д.

Удалить версию безвозвратно

Чтобы удалить версию объекта безвозвратно, выполните DELETE-запрос с указанием идентификатора версии.

Примечание

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


  1. Получите список версий объектов бакета и выберите versionId версии, которую нужно удалить.

  2. Выполните команду delete-object с указанием versionId:

    aws s3api delete-object \
    --endpoint-url https://s3.cloud.ru \
    --bucket <bucket_name> \
    --key <object_key> \
    --version-id <version_id>

    Где:

    • <bucket_name> — название бакета.

    • <object_key> — ключ объекта.

    • <version_id> — идентификатор версии, которую нужно удалить безвозвратно.

Указанная версия безвозвратно удалится. Данные нельзя будет восстановить.