Удалить бакет
Удалить бакет можно, только если он не содержит объектов. Перед удалением убедитесь, что все объекты в бакете удалены. При включенном версионировании необходимо также удалить все версии объектов и маркеры удаления.
Имя бакета уникально в рамках услуги объектное хранилище S3. После удаления бакета его имя становится доступным для создания нового бакета другим пользователем. Если вы хотите зарезервировать имя бакета для последующего использования, очистите его от объектов, но не удаляйте сам бакет.
- AWS CLI
- Python API
Если AWS CLI еще не установлен, установите и настройте его. Для работы с объектным хранилищем используйте команды s3api и s3.
AWS CLI. Удалить бакет
Удалить пустой бакет
В терминале выполните команду:
aws s3 rb s3://<bucket_name>
Укажите:
<bucket_name> — имя бакета.
Удалить бакет со всем объектами
В терминале выполните команду:
aws s3 rb s3://<bucket_name> --force`
Укажите:
<bucket_name> — имя бакета.
Очистить бакет
В терминале выполните команду:
aws s3 rm s3://<bucket_name> --recursive`
Укажите:
<bucket_name> — имя бакета.
Подробнее о бакетах см. в статье О бакетах.
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_empty_bucket(bucket_name):
try:
s3.delete_bucket(Bucket=bucket_name)
print(f"Пустой бакет '{bucket_name}' удален.")
except ClientError as e:
print(f"Ошибка при удалении бакета: {e}")
delete_empty_bucket('<bucket_name>')
Укажите:
<bucket_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 empty_bucket(bucket_name):
try:
response = s3.list_objects_v2(Bucket=bucket_name)
objects = response.get('Contents', [])
if not objects:
print("Бакет уже пуст.")
return
delete_keys = [{'Key': obj['Key']} for obj in objects]
s3.delete_objects(Bucket=bucket_name, Delete={'Objects': delete_keys})
print(f"Все объекты удалены из бакета '{bucket_name}'.")
except ClientError as e:
print(f"Ошибка при очистке бакета: {e}")
empty_bucket('<bucket_name>')
Укажите:
<bucket_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 empty_bucket(bucket_name):
try:
response = s3.list_objects_v2(Bucket=bucket_name)
objects = response.get('Contents', [])
if not objects:
print(f"Бакет '{bucket_name}' уже пуст.")
return
delete_keys = [{'Key': obj['Key']} for obj in objects]
s3.delete_objects(Bucket=bucket_name, Delete={'Objects': delete_keys})
print(f"Все объекты удалены из бакета '{bucket_name}'.")
except ClientError as e:
print(f"Ошибка при очистке бакета: {e}")
def delete_empty_bucket(bucket_name):
try:
s3.delete_bucket(Bucket=bucket_name)
print(f"Пустой бакет '{bucket_name}' успешно удален.")
except ClientError as e:
print(f"Ошибка при удалении бакета: {e}")
def delete_bucket_force(bucket_name):
empty_bucket(bucket_name)
delete_empty_bucket(bucket_name)
delete_bucket_force('<bucket_name>')
Укажите:
<bucket_name> — имя бакета.
Подробнее о бакетах см. в статье О бакетах.