В бакете с включенным версионированием можно:
просматривать список существующих версий;
восстанавливать версии;
помечать объекты как удаленные;
восстанавливать объекты, помеченные как удаленные.
удалять версии безвозвратно.
Работать с версиями объектов можно с помощью AWS S3 API и сторонних инструментов. Инструкции ниже описывают управление версиями через AWS CLI и AWS S3 API.
Чтобы получить список версий объектов в бакете:
Выполните команду:
aws s3api list-object-versions \--bucket <bucket_name> \--endpoint-url https://s3.cloud.ru
Где <bucket_name> — название бакета.
Чтобы восстановить версию:
Получите список версий объектов бакета и выберите versionId версии, которую нужно восстановить.
Скопируйте объект из версии-источника в тот же бакет с тем же ключом:
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-маркер:
Получите список версий объектов бакета и найдите versionId delete-маркера.
Удалите 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-запрос с указанием идентификатора версии.
Чтобы полностью удалить объект с несколькими версиями, удалите каждую версию объекта вручную или автоматизируйте удаление ненужных версий с помощью политик жизненного цикла объекта.
Получите список версий объектов бакета и выберите versionId версии, которую нужно удалить.
Выполните команду 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> — идентификатор версии, которую нужно удалить безвозвратно.
Указанная версия безвозвратно удалится. Данные нельзя будет восстановить.