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

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

Необходимые компоненты

  • В примерах этой статьи предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и JavaScript".
  • Механизм авторизации должен иметь разрешения на удаление контейнера BLOB-объектов или восстановление обратимого удаленного контейнера. Дополнительные сведения см. в руководстве по авторизации для следующих операций REST API:

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

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

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

Удаление контейнера с помощью BlobServiceClient

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

// delete container immediately on blobServiceClient
async function deleteContainerImmediately(blobServiceClient, containerName) {
  const response = await blobServiceClient.deleteContainer(containerName);

  if (!response.errorCode) {
    console.log(`deleted ${containerItem.name} container`);
  }
}

Удаление контейнера с помощью ContainerClient

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

async function deleteContainersWithPrefix(blobServiceClient, blobNamePrefix){

  const containerOptions = {
    includeDeleted: false,
    includeMetadata: false,
    includeSystem: true,
    prefix: blobNamePrefix
  }

  for await (const containerItem of blobServiceClient.listContainers(containerOptions)) {

    const containerClient = blobServiceClient.getContainerClient(containerItem.name);

    const response = await containerClient.delete();

    if(!response.errorCode){
      console.log(`deleted ${containerItem.name} container`);
    }
  }
}

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

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

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

// Undelete specific container - last version
async function undeleteContainer(blobServiceClient, containerName) {

  // version to undelete
  let containerVersion;

  const containerOptions = {
    includeDeleted: true,
    prefix: containerName
  }

  // container listing returns version (timestamp) in the ContainerItem
  for await (const containerItem of blobServiceClient.listContainers(containerOptions)) {

    // if there are multiple deleted versions of the same container,
    // the versions are in asc time order
    // the last version is the most recent
    if (containerItem.name === containerName) {
      containerVersion = containerItem.version;
    }
  }

  const containerClient = await blobServiceClient.undeleteContainer(
    containerName,
    containerVersion,

    // optional/new container name - if unused, original container name is used
    //newContainerName 
  );

  // undelete was successful
  console.log(`${containerName} is undeleted`);

  // do something with containerClient
  // ...
}

Ресурсы

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

Операции REST API

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

Примеры кода

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

См. также