Удаление объектов
Ограничения Если версионирование в бакете отключено, удаленный объект исчезает безвозвратно. Если версионирование включено, при удалении создается маркер удаления, который становится активной версией объекта. При этом предыдущие версии сохраняются и остаются доступными. При необходимости можно удалить конкретную версию объекта, указав ее versionID. При выполнении массового удаления можно удалить до 1000 объектов за одну команду.
- AWS CLI
- Python API
Если AWS CLI еще не установлен, установите и настройте его. Для работы с объектным хранилищем используйте команды s3api и s3.
AWS CLI. Удаление объектов
Удалить один объект
В терминале выполните команду:
aws s3 rm s3://<bucket_name>/<object_name>
Укажите:
<bucket_name> — имя бакета;
<object_name> — имя удаляемого объекта.
Удалить все объекты с определенным префиксом
В терминале выполните команду:
aws s3 rm s3://<bucket_name>/<prefix> --recursive
Укажите:
<bucket_name> — имя бакета;
<prefix> — общий префикс имен объектов для удаления, например example/folder.
Подробнее об объектах см. в статье Об объектах.
Boto3 — это библиотека Python, предоставляющая программный интерфейс (SDK) для взаимодействия с объектным хранилищем S3. Подробности см. в документации AWS Boto3.
Python API. Удаление объектов
Удалить один объект
import boto3
from botocore.exceptions import ClientError
session = boto3.session.Session(profile_name='default') #Создает сессию с использованием профиля default. Профиль находится в файле ~/.aws/credentials.
s3 = session.client('s3', endpoint_url='$endpoint')
def delete_object(bucket_name, object_key):
try:
s3.delete_object(Bucket=bucket_name, Key=object_key)
print(f"Удален: {object_key}")
except ClientError as e:
print(f"Ошибка удаления: {e}")
delete_object('<bucket_name>', '<object_name>')
Укажите:
<bucket_name> — имя бакета;
<object_name> — имя удаляемого объекта.
Удалить все объекты с определенным префиксом
import boto3
from botocore.exceptions import ClientError
session = boto3.session.Session(profile_name='default') #Создает сессию с использованием профиля default. Профиль находится в файле ~/.aws/credentials.
s3 = session.client('s3', endpoint_url='$endpoint')
def delete_objects_with_prefix(bucket_name, prefix):
paginator = s3.get_paginator('list_objects_v2')
try:
keys_to_delete = []
for page in paginator.paginate(Bucket=bucket_name, Prefix=prefix):
for obj in page.get('Contents', []):
keys_to_delete.append({'Key': obj['Key']})
# Удаление пакетами по 1000 объектов
for i in range(0, len(keys_to_delete), 1000):
batch = keys_to_delete[i:i+1000]
response = s3.delete_objects(Bucket=bucket_name, Delete={'Objects': batch})
deleted = response.get('Deleted', [])
for item in deleted:
print(f"Удален: {item['Key']}")
except ClientError as e:
print(f"Ошибка массового удаления: {e}")
delete_objects_with_prefix('<bucket_name>', '<prefix>')
Укажите:
<bucket_name> — имя бакета;
<prefix> — общий префикс имен объектов для удаления, например example/folder.
Подробнее об объектах см. в статье Об объектах.