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


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

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

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

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

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

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

В каталоге проекта установите пакеты для клиентских библиотек Хранилище BLOB-объектов Azure и удостоверений Azure с помощью dotnet add package команды. Пакет Azure.Identity необходим для бессерверных подключений к службам Azure.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Добавьте директивы using.

Добавьте эти using директивы в начало файла кода:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Для некоторых примеров кода в этой статье могут потребоваться дополнительные using директивы.

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

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

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Вы можете зарегистрировать клиент службы для внедрения зависимостей в приложении .NET.

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

Авторизация

Механизм авторизации должен иметь необходимые разрешения для перечисления контейнеров BLOB-объектов. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется), требуется встроенный участник данных хранилища 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:

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

См. также

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