Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Object Storage
    • Все инструкции
      • Загрузка объекта
      • Составная загрузка объекта
      • Получение списка объектов в бакете
      • Получение информации об объекте
      • Скачивание объекта
      • Восстановление версии объекта
      • Переименование и перемещение объекта
      • Копирование объектов
      • Получение подписанной ссылки (pre-signed URL) на скачивание объекта
      • Настройка блокировок версии объекта
      • Удаление объекта
      • Удаление всех объектов
      • Удаление частично загруженного объекта
      • Редактирование ACL объекта
      • Управление метками объекта
      • Управление пользовательскими метаданными объекта
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Объекты
  3. Удаление всех объектов

Удаление всех объектов из бакета

Статья создана
Yandex Cloud
Улучшена
Обновлена 10 сентября 2025 г.

Важно

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

Примечание

Для автоматического удаления частично загруженных объектов в Object Storage настройте правило жизненных циклов.

Чтобы очистить бакет и не платить за хранение:

Yandex Cloud CLI
AWS CLI
Python (boto3)
API

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для удаления объектов:

    yc storage s3api delete-objects --help
    
  2. Получите список бакетов в каталоге по умолчанию:

    yc storage bucket list
    

    Результат:

    +------------------+----------------------+-------------+-----------------------+---------------------+
    |       NAME       |      FOLDER ID       |  MAX SIZE   | DEFAULT STORAGE CLASS |     CREATED AT      |
    +------------------+----------------------+-------------+-----------------------+---------------------+
    | first-bucket     | b1gmit33ngp6******** | 53687091200 | STANDARD              | 2022-12-16 13:58:18 |
    +------------------+----------------------+-------------+-----------------------+---------------------+
    
  3. Подготовьте файл JSON со списком объектов для удаления. Пример наполнения:

    {
        "Objects": [
            {
                "Key": "<ключ_объекта>"
            },
            {
                "Key": "<ключ_объекта>"
            },
            ...
        ]          
    }
    

    Где:

    • Objects — массив объектов для удаления.
    • Key — ключ объекта.
  4. Выполните команду:

    yc storage s3api delete-objects \
      --bucket <имя_бакета> \
      --delete <путь_к_файлу_json>
    

    Где:

    • --bucket — имя вашего бакета.
    • --delete — путь к файлу JSON со списком объектов для удаления.

    Результат:

    deleted:
      - key: file-1
        version_id: "null"
      - key: file-2
        version_id: "null"
    request_id: 4c35e7d4********
    

    Альтернативная команда:

    yc storage s3 rm \
      s3://<имя_бакета>/ \
      --recursive
    

    Где --recursive — параметр для удаления всех объектов.

    Результат:

    delete: s3://my-bucket/object-1.txt
    delete: s3://my-bucket/object-2.txt
    ...
    delete: s3://my-bucket/object-n.txt
    

Если у вас еще нет AWS CLI, установите и сконфигурируйте его.

  1. Создайте переменную с именем бакета:

    BUCKET_NAME=<имя_бакета>
    
  2. Удалите все версии объектов из бакета:

    aws s3api delete-objects \
      --endpoint-url https://storage.yandexcloud.net \
      --bucket $BUCKET_NAME \
      --delete \
        "$(aws s3api list-object-versions \
          --endpoint-url https://storage.yandexcloud.net \
          --bucket $BUCKET_NAME \
          --query '{Objects: Versions[].{Key: Key, VersionId: VersionId}}' \
          --max-items 1000)"
    

    Также вместо параметра --max-items вы можете использовать --max-keys.

    Результат:

    {
        "Deleted": [
            {
                "Key": "object_000",
                "VersionId": "0005CDD3********"
            },
            {
                "Key": "object_001",
                "VersionId": "0005CDD3********"
            },
            ...
        ]
    }
    

    С помощью этой команды можно удалить до 1000 версий объектов: это связано с ограничением операции aws s3api delete-objects. Если в бакете больше версий, повторите команду несколько раз.

  3. Если для бакета включено версионирование, удалите все delete-маркеры:

    aws s3api delete-objects \
      --endpoint-url https://storage.yandexcloud.net \
      --bucket $BUCKET_NAME \
      --delete \
        "$(aws s3api list-object-versions \
          --endpoint-url https://storage.yandexcloud.net \
          --bucket $BUCKET_NAME \
          --query '{Objects: DeleteMarkers[].{Key: Key, VersionId: VersionId}}' \
          --max-items 1000)"
    

    Также вместо параметра --max-items вы можете использовать --max-keys.

    Результат:

    {
        "Deleted": [
            {
                "Key": "object_034",
                "DeleteMarker": true,
                "DeleteMarkerVersionId": "0005CDD3********"
            },
            {
                "Key": "object_057",
                "DeleteMarker": true,
                "DeleteMarkerVersionId": "0005CDD3********"
            },
            ...
        ]
    }
    

    С помощью этой команды можно удалить до 1000 delete-маркеров: это связано с ограничением операции aws s3api delete-objects. Если в бакете больше delete-маркеров, повторите команду несколько раз.

  4. Удалите частично загруженные объекты:

    aws s3api list-multipart-uploads \
      --endpoint-url https://storage.yandexcloud.net \
      --bucket $BUCKET_NAME \
    | jq -r '.Uploads[] | "--key \"\(.Key)\" --upload-id \(.UploadId)"' \
    | while read -r line; do
      eval 
        "aws s3api abort-multipart-upload \
          --endpoint-url https://storage.yandexcloud.net \
          --bucket $BUCKET_NAME \
          $line";
    done
    
  5. Получите список частей объектов, оставшихся в бакете:

    aws s3api list-multipart-uploads \
      --endpoint-url https://storage.yandexcloud.net \
      --bucket $BUCKET_NAME \
    | jq -r '.Uploads[] | "--key \"\(.Key)\" --upload-id \(.UploadId)"' \
    | while read -r line; do
      eval 
        "aws s3api list-parts \
          --endpoint-url https://storage.yandexcloud.net \
          --bucket $BUCKET_NAME \
          $line";
    done
    

    В списке могут оказаться части объектов, загрузка которых началась до выполнения предыдущего шага и закончилась после него. Если список не пуст, повторите шаги 4–5.

Выполните следующий код:

import boto3

bucket_name = '<имя_бакета>'
s3 = boto3.resource('s3',
    endpoint_url='https://storage.yandexcloud.net',
    aws_access_key_id='<идентификатор_ключа>',
    aws_secret_access_key='<секретный_ключ>')
bucket = s3.Bucket(bucket_name)

# Deleting all versions (works for non-versioned buckets too).
bucket.object_versions.delete()

# Aborting all multipart uploads, which also deletes all parts.
for multipart_upload in bucket.multipart_uploads.iterator():
    # Part uploads that are currently in progress may or may not succeed,
    # so it might be necessary to abort a multipart upload multiple times.
    while len(list(multipart_upload.parts.all())) > 0:
        multipart_upload.abort()

Воспользуйтесь методом S3 API deleteMultipleObjects.

В консоли управления информация о количестве объектов в бакете и занятом месте обновляется с задержкой в несколько минут.

Была ли статья полезна?

Предыдущая
Удаление объекта
Следующая
Удаление частично загруженного объекта
Проект Яндекса
© 2025 ООО «Яндекс.Облако»