Поиск BLOB-объектов по тегам

Операция находит все blob-ы в аккаунте хранилища, чьи теги совпадают Find Blobs by Tags с поисковым выражением.

запрос

Можно создать запрос Find Blobs by Tags следующим образом. Мы рекомендуем HTTPS. Замените myaccount именем учетной записи хранения.

URI запроса метода GET Версия HTTP
https://myaccount.blob.core.windows.net?comp=blobs&where=<expression> HTTP/1.1

Параметры URI

Можно указать следующие дополнительные параметры в URI запроса:

Параметр Описание
expression Обязательно. Фильтрует набор результатов так, чтобы включать только те blobs, чьи теги совпадают с указанным выражением.

Для получения дополнительной информации о том, как построить это выражение, см. Примечания.
marker Необязательно. Строковое значение, определяющее часть результирующий набор, возвращаемую с помощью следующей операции. Операция возвращает значение маркера в теле ответа, если возвращённый набор результатов не был полным. Значение маркера затем может быть использовано в следующем вызове для запроса следующего набора элементов.

Значение маркера непрозрачно для клиента.
maxresults Необязательно. Указывает максимальное количество возвращаемых BLOB-объектов. Если в запросе не maxresults указано или не указано значение более 5 000, сервер возвращает до 5 000 элементов. Если есть дополнительные результаты, которые нужно вернуть, служба возвращает маркер продолжения в элементе ответа NextMarker . В некоторых случаях сервис может давать меньше результатов, чем maxresults указано. Сервис также может возвращать токен продолжения.

Задание maxresults значением меньше или равно нулю приводит к коду ответа об ошибке 400 (недопустимый запрос).
timeout Необязательно. Выражено в секундах. Для получения дополнительной информации см. раздел «Установка тайм-аутов для операций с Blob Storage».

Заголовки запроса

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

Заголовок запроса Описание
Authorization Обязательно. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к службе хранилища Azure.
Date или x-ms-date Обязательно. Указывает универсальное время (UTC) для запроса. Дополнительные сведения см. в статье Авторизация запросов к службе хранилища Azure.
x-ms-version Требуется для всех авторизованных запросов, но необязательно для анонимных. Указывает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями служб хранилища Azure.
x-ms-client-request-id Необязательно. Предоставляет созданное клиентом непрозрачное значение с ограничением символов 1-kibibyte (KiB), записанным в журналах при настройке ведения журнала. Настоятельно рекомендуется использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером.

Текст запроса

Нет.

Ответ

Ответ включает HTTP-код статуса, заголовки ответов и тело ответа.

Код состояния

Успешная операция возвращает код состояния 200 (ОК).

Сведения о кодах состояния см. в коды состояния и коды ошибок.

Заголовки ответа

Ответ для этой операции содержит следующие заголовки. Ответ также может включать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Заголовок ответа Описание
Content-Type Указывается application/xml как тип контента.
Content-Length Указывает размер возвращаемого XML-документа в байтах.
x-ms-request-id Уникально идентифицирует выполненный запрос. Вы можете использовать его для устранения неполадок с запросом. Дополнительные сведения см. в статье Устранение неполадок с операциями API.
x-ms-version Указывает версию Azure Blob Storage, использовавшуюся для выполнения запроса.
Date Значение даты и времени в формате UTC, указывающее время отправки ответа службой.
x-ms-client-request-id Может использоваться для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению x-ms-client-request-id самого заголовка, если оно присутствует в запросе и значение не более 1 024 видимых ASCII-символа. Если заголовок x-ms-client-request-id отсутствует в запросе, он не будет присутствовать в ответе.

Основная часть ответа

В версиях 2020-04-08 и более поздних верствиях соответствующие теги blob содержатся внутри элемента Tags . Формат тела ответа следующий:

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ServiceEndpoint=http://myaccount.blob.core.windows.net/>  
  <Where>string-value</Where>  
  <Blobs>  
    <Blob>  
      <Name>blob-name</Name>  
      <ContainerName>container-name</ContainerName>  
      <Tags>
        <TagSet>
          <Tag>
            <Key>matching-tag-name1</Key>
            <Value>matching-tag-value1</Value>
          </Tag>
          <Tag>
            <Key>matching-tag-name2</Key>
            <Value>matching-tag-value2</Value>
          </Tag>
        </TagSet>
      </Tags> 
    </Blob>  
  </Blobs>  
  <NextMarker />  
</EnumerationResults>  

Ответный корпус представляет собой хорошо сформированный XML-документ UTF-8.

Authorization

Авторизация требуется при вызове любой операции доступа к данным в службе хранилища Azure. Вы можете авторизовать операцию Find Blobs by Tags, как описано ниже.

Это важно

Корпорация Майкрософт рекомендует использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов в службу хранилища Azure. Идентификатор Microsoft Entra обеспечивает более высокую безопасность и удобство использования по сравнению с авторизацией общего ключа.

Служба хранилища Azure поддерживает использование идентификатора Microsoft Entra для авторизации запросов к данным BLOB-объектов. С помощью идентификатора Microsoft Entra можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности. Субъект безопасности может быть пользователем, группой, субъектом-службой приложений или управляемым удостоверением Azure. Принципал безопасности проходит проверку подлинности с помощью Microsoft Entra ID, чтобы вернуть токен OAuth 2.0. Затем маркер можно использовать для авторизации запроса к службе BLOB-объектов.

Дополнительные сведения об авторизации с помощью идентификатора Microsoft Entra см. в статье Авторизация доступа к большим двоичным объектам с помощью идентификатора Microsoft Entra ID.

Разрешения

Ниже приведены действия RBAC, необходимые для пользователя Microsoft Entra, группы, управляемого удостоверения или субъекта-службы для вызова операции Find Blobs by Tags и минимально привилегированной встроенной роли Azure RBAC, которая включает в себя следующее:

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

Замечания

Операция поддерживается в версии Find Blobs by Tags REST API 2019-12-12 и более поздней.

Для аккаунтов с включённым иерархическим пространством имён эта Find Blobs by Tags операция не поддерживается.

Вторичный индекс, который Find Blobs by Tags использует, в конечном итоге становится последовательным. Обновления blob-тегов через Set Blob Tags могут быть не сразу видимы для Find Blobs by Tags операций.

Построение поискового выражения

Параметр URI находит скопления в аккаунте хранилища, чьи теги совпадают where с выражением. Выражение должно быть вычислено в true , чтобы blob был возвращён в наборе результатов.

Сервис хранения поддерживает подмножество грамматики ANSI SQL WHERE clause для значения where=<expression> параметра запроса. Сервис хранения поддерживает следующих операторов:

Оператор Описание Пример
= Равно &where=Status = 'In Progress'
> Больше &where=LastModified > '2018-06-18 20:51:26Z'
>= Больше или равно &where=Priority >= '05'
< Меньше &where=Age < '032'
<= Меньше или равно &where=Reviewer <= 'Smith'
AND Логическое И &where=Name > 'C' AND Name < 'D'
&where=Age > '032' AND Age < '100'
@container Укажите контейнер &where=@container='mycontainer' AND Name = 'C'

Замечание

Значение where параметра URI должно быть корректно закодировано URI (включая пробелы и операторы). В предыдущих примерах это опущено ради удобства читаемости.

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

Если имена тегов являются обычными SQL-идентификаторами, они могут присутствовать без выхода из системы. Если в них содержатся какие-либо специальные символы, их необходимо разделить двойными кавычками (например, "TagName" = TagValue). Мы рекомендуем всегда заключать имена тегов в двойные кавычки.

Служба хранения отклоняет любой запрос с недействительным выражением с кодом ошибки 400 (Плохой запрос).

Выставление счетов

Запросы цен могут возникать от клиентов, использующих API хранилища BLOB-объектов, непосредственно через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за транзакцию. Тип транзакции влияет на то, как взимается учетная запись. Например, транзакции чтения начисляются в другую категорию выставления счетов, чем операции записи. В следующей таблице показана категория выставления счетов для запросов Find Blobs by Tags на основе типа учетной записи хранения:

Операция Тип учетной записи хранения Категория выставления счетов
Поиск BLOB-объектов по тегам Блочный BLOB-объект категории "Премиум".
Стандартная версия общего назначения v2
Стандартная версия общего назначения 1
Перечисление и создание операций контейнера

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

См. также

Управление и поиск данных на Azure Blob Storage с индексными тегами blob
Авторизация запросов в службу хранилища Azure
Коды состояний и ошибок
коды ошибок хранилища BLOB-объектов