Поделиться через


Удаление и восстановление контейнера объектов BLOB с помощью Java

В этой статье показано, как удалить контейнеры с помощью клиентской библиотеки Azure Storage для Java. Если вы включили обратимое удаление контейнера, можно восстановить удаленные контейнеры.

Предварительные условия

Настройка среды

Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Дополнительные сведения см. в статье "Начало работы с Хранилище BLOB-объектов Azure и Java".

Чтобы работать с примерами кода в этой статье, выполните следующие действия, чтобы настроить проект.

Примечание.

В этой статье используется средство сборки Maven для создания и запуска примера кода. Для работы с пакетами SDK Azure для Java есть и другие средства сборки, например Gradle.

Установка пакетов

Откройте файл pom.xml в текстовом редакторе. Установите пакеты, включив файл BOM или включив прямую зависимость.

Добавьте инструкции импорта

Добавьте следующие утверждения import :

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;

Авторизация

Механизм авторизации должен иметь необходимые разрешения для удаления или восстановления контейнера. Для авторизации с помощью Microsoft Entra ID (рекомендуется) требуется встроенная роль Участник данных BLOB-объектов хранилища или выше. Дополнительные сведения см. в руководстве по авторизации для удаления контейнера (REST API) и восстановления контейнера (REST API).

Создание клиентского объекта

Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient.

В следующем примере используется BLOBServiceClientBuilder для создания BlobServiceClient объекта с помощью DefaultAzureCredentialи показано, как создать клиенты контейнеров и BLOB-объектов при необходимости:

// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("<container-name>");

// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
        .getBlobClient("<blob-name>");

Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.

Удаление контейнера

Чтобы удалить контейнер в Java, используйте один из следующих методов из BlobServiceClient класса:

Вы также можете удалить контейнер с помощью одного из следующих методов из BlobContainerClient класса:

После удаления контейнера вы не сможете создать контейнер с тем же именем в течение как минимум 30 секунд. При попытке создать контейнер с тем же именем операция завершится сбоем с кодом ошибки HTTP 409 (Conflict). Любые другие операции с контейнером или большими двоичными объектами, содержащимися в ней, завершаются ошибкой HTTP 404 (Not Found).

В следующем примере для удаления указанного контейнера используется BlobServiceClient объект:

public void deleteContainer(BlobServiceClient blobServiceClient, String containerName) {
    // Delete the container using the service client
    blobServiceClient.deleteBlobContainer(containerName);
}

В следующем примере показано, как удалить все контейнеры, начинающиеся с указанного префикса:

public void deleteContainersWithPrefix(BlobServiceClient blobServiceClient) {
    ListBlobContainersOptions options = new ListBlobContainersOptions()
            .setPrefix("container-");

    // Delete the container with the specified prefix using the service client
    for (BlobContainerItem containerItem : blobServiceClient.listBlobContainers(options, null)) {
        BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerItem.getName());
        containerClient.delete();
    }
}

Восстановление удаленного контейнера

Если обратимое удаление контейнера включено для учетной записи хранения, удаленный контейнер и его содержимое могут быть восстановлены в течение указанного периода хранения. Дополнительные сведения о мягком удалении контейнеров см. в статье «Включение и управление мягким удалением для контейнеров». Вы можете восстановить мягко удаленный контейнер, вызвав метод BlobServiceClient класса:

Следующий пример находит удаленный контейнер, получает версию удаленного контейнера, а затем передает версию undeleteBlobContainer в метод для восстановления контейнера.

public void restoreContainer(BlobServiceClient blobServiceClient) {
    ListBlobContainersOptions options = new ListBlobContainersOptions();
    options.getDetails().setRetrieveDeleted(true);

    // Delete the container with the specified prefix using the service client
    for (BlobContainerItem deletedContainerItem : blobServiceClient.listBlobContainers(options, null)) {
        BlobContainerClient containerClient = blobServiceClient
                .undeleteBlobContainer(deletedContainerItem.getName(), deletedContainerItem.getVersion());
    }
}

Ресурсы

Дополнительные сведения об удалении контейнера с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.

Примеры кода

Операции REST API

Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для удаления или восстановления контейнера используют следующие операции REST API:

Ресурсы клиентской библиотеки

См. также

  • Эта статья является частью руководства разработчика хранилища BLOB-объектов для Java. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Java.