Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как использовать теги индекса блобов для управления и поиска данных с помощью клиентской библиотеки служба хранилища Azure для JavaScript.
Предварительные требования
- В примерах этой статьи предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и JavaScript".
- Механизм авторизации должен иметь разрешения на работу с тегами индекса блобов. Дополнительные сведения см. в руководстве по авторизации для следующих операций REST API:
О тегах индекса BLOB
Теги индекса больших двоичных объектов классифицируют данные в учетной записи хранения с помощью атрибутов тегов типа "ключ-значение". Эти теги автоматически индексируются и представляются в виде многомерного индекса с поддержкой поиска для упрощения нахождения данных. В этой статье показано, как задавать, получать и находить данные с помощью тегов индекса больших двоичных объектов.
Теги индекса BLOB не поддерживаются для хранилищ с активированным иерархическим пространством имен. Дополнительные сведения о функции тега индекса BLOB-объектов вместе с известными проблемами и ограничениями см. в статье "Управление и поиск данных BLOB-объектов Azure с тегами индекса BLOB-объектов".
Настройка тегов
Теги индекса можно задать, если код имеет авторизованный доступ к данным BLOB с помощью одного из следующих механизмов:
- Субъект безопасности, которому назначена роль Azure RBAC с действием Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write. Встроенная роль Владелец данных BLOB-объектов хранилища охватывает это действие.
- Подпись общего доступа (SAS) с разрешением на доступ к тегам объекта BLOB (
tразрешение) - Ключ учетной записи
Дополнительные сведения см. в статье Настройка тегов индекса объекта BLOB.
Теги можно задать с помощью следующего метода:
Указанные теги в этом методе заменяют существующие теги. Если старые значения должны быть сохранены, их необходимо скачать и включить в вызов этого метода. В следующем примере показано, как задать теги:
async function setBlobTags(containerClient, blobName) {
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
const tags = {
'Sealed': 'false',
'Content': 'image',
'Date': '2022-07-18',
}
// Set tags
await blockBlobClient.setTags(tags);
}
Все теги можно удалить, передав пустой объект JSON в setTags метод.
Получить теги
Теги индекса можно получить, если код имеет авторизованный доступ к данным блоб-объектов через один из следующих механизмов:
- Субъект безопасности, которому назначена роль Azure RBAC с действием Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read. Встроенная роль Владелец данных BLOB-объектов хранилища охватывает это действие.
- Подпись общего доступа (SAS) с разрешением на доступ к тегам объекта BLOB (
tразрешение) - Ключ учетной записи
Дополнительные сведения см. в разделе Получение и перечисление тегов индекса BLOB-объектов.
Теги можно получить с помощью следующего метода:
В следующем примере показано, как получить и выполнить итерацию по тегам большого двоичного объекта.
async function getBlobTags(containerClient, blobName) {
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// Get tags
const result = await blockBlobClient.getTags();
for (const tag in result.tags) {
console.log(`TAG: ${tag}: ${result.tags[tag]}`);
}
}
Фильтрация и поиск данных с blob-индейстагами
Теги индекса можно использовать для поиска и фильтрации данных, если код имеет авторизованный доступ к данным BLOB-объектов с помощью одного из следующих механизмов:
- Субъект безопасности, которому назначена роль Azure RBAC, с действием Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action. Встроенная роль Владелец данных BLOB-объектов хранилища охватывает это действие.
- Подписанный URL-адрес (SAS) с разрешением на фильтрацию BLOB-объектов по тегам (разрешение
f) - Ключ учетной записи
Дополнительные сведения см. в статье Поиск данных с помощью тегов индекса BLOB-объектов.
Примечание.
Вы не можете запросить теги индекса для получения предыдущих версий. Теги для предыдущих версий не передаются в обработчик индекса больших двоичных объектов. Дополнительные сведения см. в разделе Ограничения и известные проблемы.
Данные запрашиваются с помощью объекта JSON, отправленного в виде строки. Свойства необязательно должны содержать дополнительные строковые кавычки, но строковые значения должны быть указаны в кавычках.
В следующей таблице показано несколько строк запросов.
| Строка запроса для тегов (tagOdataQuery) | Описание |
|---|---|
id='1' AND project='billing' |
Фильтрация BLOB-объектов по всем контейнерам на основе этих двух свойств |
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' |
Фильтрация BLOB-объектов по всем контейнерам на основе строгого значения свойства для owner и диапазона дат для свойства createdOn. |
@container = 'my-container' AND createdBy = 'Jill' |
Фильтрация по контейнеру и конкретному свойству. В этом запросе createdBy является текстовым соответствием и не означает соответствия авторизации через Active Directory. |
Для поиска данных можно использовать один из следующих методов:
В следующем примере найдены все объекты BLOB, соответствующие параметру tagOdataQuery.
async function findBlobsByQuery(blobServiceClient, tagOdataQuery) {
// page size
const maxPageSize = 10;
let i = 1;
let marker;
const listOptions = {
includeMetadata: true,
includeSnapshots: false,
includeTags: true,
includeVersions: false
};
let iterator = blobServiceClient.findBlobsByTags(tagOdataQuery, listOptions).byPage({ maxPageSize });
let response = (await iterator.next()).value;
// Prints blob names
if (response.blobs) {
for (const blob of response.blobs) {
console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
}
}
// Gets next marker
marker = response.continuationToken;
// no more blobs
if (!marker) return;
// Passing next marker as continuationToken
iterator = blobServiceClient
.findBlobsByTags(tagOdataQuery, listOptions)
.byPage({ continuationToken: marker, maxPageSize });
response = (await iterator.next()).value;
// Prints blob names
if (response.blobs) {
for (const blob of response.blobs) {
console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
}
}
}
В примере выходных данных для этой функции показаны соответствующие BLOB-объекты и их теги на основе кода console.log в предыдущей функции:
| Ответ |
|---|
| Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"создано":"2022-01","владелец":"PhillyProject","проект":"set-tags-1650565920363"} |
Ресурсы
Дополнительные сведения об использовании тегов индекса для управления и поиска данных с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript см. в следующих ресурсах.
Примеры кода
- Просмотр примеров кода JavaScript и TypeScript из этой статьи (GitHub)
Операции REST API
Пакет SDK Azure для JavaScript содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы JavaScript. Методы библиотеки клиента для управления и использования тегов индекса BLOB-объектов используют следующие операции REST API.
- Получение тегов BLOB-объектов (REST API)
- Установка тегов BLOB (REST API)
- Найти БЛОБы по тегам (REST API)