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


Использование тегов индекса BLOB-объектов для управления данными и поиска данных с помощью .NET

В этой статье показано, как использовать индексные теги BLOB-объектов для управления и поиска данных с помощью клиентской библиотеки Azure Storage для .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.

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

Авторизация

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

Сведения о тегах индексов объектов BLOB

Теги индекса Blob классифицируют данные в учетной записи хранения с помощью атрибутов тегов с типом "ключ-значение". Эти теги автоматически индексируются и представляются в виде многомерного индекса с поддержкой поиска для упрощения нахождения данных. В этой статье показано, как задавать, получать и находить данные с помощью тегов индекса больших двоичных объектов.

Теги индекса объектов Blob не поддерживаются для учетных записей хранилища с включенным иерархическим пространством имен. Дополнительные сведения о функции тега индекса BLOB-объектов вместе с известными проблемами и ограничениями см. в статье "Управление и поиск данных BLOB-объектов Azure с тегами индекса BLOB-объектов".

Настройка тегов

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

Дополнительную информацию см. в статье Настройка тегов индекса BLOB.

Теги можно установить одним из следующих способов.

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

public static async Task SetTags(BlobClient blobClient)
{
    Dictionary<string, string> tags = 
        new Dictionary<string, string>
    {
        { "Sealed", "false" },
        { "Content", "image" },
        { "Date", "2020-04-20" }
    };

    await blobClient.SetTagsAsync(tags);
}

Все теги можно удалить, передав пустой словарь [Dictionary] в метод SetTags или SetTagsAsync, как показано в следующем примере.

Dictionary<string, string> noTags = new Dictionary<string, string>();
await blobClient.SetTagsAsync(noTags);
Связанные статьи
Управление данными больших двоичных объектов Azure и их поиск с помощью тегов индекса больших двоичных объектов
Установка тегов Blob (REST API)

Получить Теги

Теги индекса можно получить, если код имеет авторизованный доступ к BLOB-данным при помощи одного из следующих механизмов:

  • Субъект безопасности, которому назначена роль Azure RBAC с действием Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read. Владелец данных BLOB-объектов хранилища — это встроенная роль, которая включает это действие.
  • Подписанный URL (SAS) с разрешением на доступ к тегам объекта BLOB (t разрешение)
  • Ключ учетной записи

Дополнительные сведения см. в разделе "Получение и перечисление тегов индекса BLOB-объектов".

Теги можно получить одним из следующих способов.

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

public static async Task GetTags(BlobClient blobClient)
{
    Response<GetBlobTagResult> tagsResponse = await blobClient.GetTagsAsync();

    foreach (KeyValuePair<string, string> tag in tagsResponse.Value.Tags)
    {
        Console.WriteLine($"{tag.Key}={tag.Value}");
    }
}

Фильтрация и поиск данных с тегами индекса BLOB

Теги индекса можно использовать для поиска и фильтрации данных, если код имеет авторизованный доступ к объектам BLOB с помощью одного из следующих механизмов:

  • Субъект безопасности, которому назначена роль Azure RBAC с действием Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action. Владелец данных BLOB-объектов хранилища — это встроенная роль, которая включает это действие.
  • Подписанный URL-адрес общего доступа (SAS) с разрешением на фильтрацию BLOB-объектов по тегам (f разрешение)
  • Ключ учетной записи

Дополнительные сведения см. в разделе Поиск данных с использованием тегов индекса BLOB-объектов.

Примечание.

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

Для поиска данных можно использовать один из следующих методов.

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

public static async Task FindBlobsbyTags(BlobServiceClient serviceClient)
{
    string query = @"""Date"" >= '2020-04-20' AND ""Date"" <= '2020-04-30'";

    // Find Blobs given a tags query
    Console.WriteLine("Find Blob by Tags query: " + query + Environment.NewLine);

    List<TaggedBlobItem> blobs = new List<TaggedBlobItem>();
    await foreach (TaggedBlobItem taggedBlobItem in serviceClient.FindBlobsByTagsAsync(query))
    {
        blobs.Add(taggedBlobItem);
    }

    foreach (var filteredBlob in blobs)
    {
        
        Console.WriteLine($"BlobIndex result: ContainerName= {filteredBlob.BlobContainerName}, " +
            $"BlobName= {filteredBlob.BlobName}");
    }

}

Ресурсы

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

Операции REST API

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

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

См. также

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