Удаление и восстановление объектов
Если вы удалите объект из бакета с версионированием, все предыдущие его версии останутся доступными, что дает возможность восстановить удаленный объект. Также вы всегда можете удалить конкретные версии объекта, если они утратили актуальность.
Удалить версию объекта
Заголовок раздела «Удалить версию объекта»- Веб-консоль
- AWS CLI
- Python
- Go
- В веб-консоли выберите нужный проект.
- В списке сервисов выберите Object Storage.
- Нажмите на имя нужного бакета.
- Включите опцию Показать версии.
- Нажмите на значок … для удаляемой версии и выберите Удалить.
Очистить бакет с версионированием
Заголовок раздела «Очистить бакет с версионированием»Удаление из бакета всех объектов и их версий (например, удаление бакета с версионированием) можно автоматизировать с помощью приведенных ниже примеров кода.
- Python
- Go
Приведенный код на Python:
- Импортирует
boto3— официальный AWS SDK для Python. - Cоздает ресурс и сессию для доступа к Object Storage.
- Определяет имя бакета.
- Проверяет, включено ли в бакете версионирование.
- Если версионирование включено, удаляет из бакета все объекты и их версии.
- Если версионирование не включено, выводит соответствующее сообщение. Никакие объекты из бакета при этом не удаляются.
import boto3
# Создаем ресурс S3session = boto3.session.Session(profile_name='default')s3 = session.resource('s3', endpoint_url='https://storage.mwsapis.ru')
# Указываем имя бакетаbucket_name = 'bucket'bucket = s3.Bucket(bucket_name)
# Проверяем, включено ли версионированиеbucket_versioning = s3.BucketVersioning(bucket_name)if bucket_versioning.status == 'Enabled': # Удаляем все версии объектов for version in bucket.object_versions.all(): version.delete() print("All objects and versions have been successfully deleted")else: print("Versioning is not enabled in the bucket")Восстановить объект
Заголовок раздела «Восстановить объект»Если вы по ошибке удалили объект из бакета с включенным версионированием, вы всегда можете восстановить его.
Для этого нужно:
- Получить список всех версий для этого объекта.
- Найти среди этих версий маркер удаления.
- Удалить маркер удаления.
После этого будет восстановлена последняя версия, загруженная до удаления.
- Python
- Go
Приведенный код на Python:
- Импортирует
boto3— официальный AWS SDK для Python. - Создает сессию и клиент для подключения к Object Storage.
- Определяет имя бакета и имя объекта, который нужно восстановить.
- Получает список всех версий указанного объекта.
- Проходит по списку циклом и находит последний маркер удаления (у которого параметр
IsLatestимеет значениеtrue). - Удаляет маркер удаления и восстанавливает удаленную ранее текущую версию объекта.
import boto3
# Создаем сессию и клиентsession = boto3.session.Session(profile_name='default')s3 = session.client('s3')
# Параметрыbucket_name = 'bucket'object_key = 'object.txt'
# Получаем список всех версий объектаresponse = s3.list_object_versions( Bucket=bucket_name, Prefix=object_key)
# Ищем последний маркер удаления (IsLatest: True)delete_marker_version_id = Nonefor delete_marker in response.get('DeleteMarkers', []): if delete_marker['Key'] == object_key and delete_marker['IsLatest']: delete_marker_version_id = delete_marker['VersionId'] print(f"Found latest delete marker with version ID: {delete_marker_version_id}") break
# Удаляем маркер удаления, если он найденif delete_marker_version_id: s3.delete_object( Bucket=bucket_name, Key=object_key, VersionId=delete_marker_version_id ) print(f"Successfully removed the latest delete marker for {object_key} in {bucket_name}")else: print(f"No delete marker found for {object_key} in {bucket_name}")