Получение списка контейнеров BLOB-объектов с помощью .NET

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

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

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

Сведения о параметрах перечисления контейнеров

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

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

Эти методы возвращают список объектов BlobContainerItem . Контейнеры упорядочены лексографически по имени.

Управление количеством возвращаемых результатов

По умолчанию операция получения списка возвращает не более 5000 результатов за раз, но вы можете определить количество возвращаемых результатов для каждой операции получения списка. Представленные в этой статье примеры демонстрируют постраничное получение результатов. Дополнительные сведения о концепциях разбиения на страницы см. в статье "Разбиение на страницы" с помощью пакета SDK Azure для .NET.

Фильтрация результатов с помощью префикса

Чтобы отфильтровать список контейнеров, укажите строку для параметра prefix. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те контейнеры, имена которых начинаются с этого префикса.

Включение метаданных контейнера

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

Включение удаленных контейнеров

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

Пример кода: список контейнеров

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

async static Task ListContainers(BlobServiceClient blobServiceClient, 
                                string prefix, 
                                int? segmentSize)
{
    try
    {
        // Call the listing operation and enumerate the result segment.
        var resultSegment = 
            blobServiceClient.GetBlobContainersAsync(BlobContainerTraits.Metadata, prefix, default)
            .AsPages(default, segmentSize);

        await foreach (Azure.Page<BlobContainerItem> containerPage in resultSegment)
        {
            foreach (BlobContainerItem containerItem in containerPage.Values)
            {
                Console.WriteLine("Container name: {0}", containerItem.Name);
            }

            Console.WriteLine();
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Ресурсы

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

Операции REST API

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

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

См. также