Använda blobindextaggar för att hantera och hitta data med JavaScript
Den här artikeln visar hur du använder blobindextaggar för att hantera och hitta data med hjälp av Azure Storage-klientbiblioteket för JavaScript.
Förutsättningar
- Exemplen i den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för JavaScript. Information om hur du konfigurerar projektet, inklusive paketinstallation, import av moduler och att skapa ett auktoriserat klientobjekt för att arbeta med dataresurser, finns i Kom igång med Azure Blob Storage och JavaScript.
- Auktoriseringsmekanismen måste ha behörighet att arbeta med blobindextaggar. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:
Om blobindextaggar
Blobindextaggar kategoriserar data i ditt lagringskonto med hjälp av taggattribut för nyckelvärde. Dessa taggar indexeras automatiskt och exponeras som ett sökbart flerdimensionellt index för att enkelt hitta data. Den här artikeln visar hur du anger, hämtar och hittar data med hjälp av blobindextaggar.
Blobindextaggar stöds inte för lagringskonton med hierarkiskt namnområde aktiverat. Mer information om funktionen blobindextagg tillsammans med kända problem och begränsningar finns i Hantera och hitta Azure Blob-data med blobindextaggar.
Ange taggar
Du kan ange indextaggar om koden har auktoriserad åtkomst till blobdata via någon av följande mekanismer:
- Säkerhetsobjekt som har tilldelats en Azure RBAC-roll med åtgärden Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . Lagringsblobdataägaren är en inbyggd roll som innehåller den här åtgärden.
- Signatur för delad åtkomst (SAS) med behörighet att komma åt blobens taggar (
t
behörighet) - Kontonyckel
Mer information finns i Ange blobindextaggar.
Om du vill ange taggar vid blobuppladdningen skapar du en BlobClient och använder sedan följande metod:
I följande exempel utförs den här uppgiften.
// A blob can have up to 10 tags.
//
// const tags = {
// project: 'End of month billing summary',
// reportOwner: 'John Doe',
// reportPresented: 'April 2022'
// }
async function setTags(containerClient, blobName, tags) {
// Create blob client from container client
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// Set tags
await blockBlobClient.setTags(tags);
console.log(`uploading blob ${blobName}`);
}
Du kan ta bort alla taggar genom att skicka ett tomt JSON-objekt till metoden setTags.
Relaterade artiklar |
---|
Hantera och hitta Azure Blob-data med blobindextaggar |
Ange blobtaggar (REST API) |
Hämta taggar
Du kan hämta indextaggar om koden har auktoriserad åtkomst till blobdata via någon av följande mekanismer:
- Säkerhetsobjekt som tilldelas en Azure RBAC-roll med åtgärden Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . Lagringsblobdataägaren är en inbyggd roll som innehåller den här åtgärden.
- Signatur för delad åtkomst (SAS) med behörighet att komma åt blobens taggar (
t
behörighet) - Kontonyckel
Mer information finns i Hämta och lista blobindextaggar.
Om du vill hämta taggar skapar du en BlobClient och använder sedan följande metod:
I följande exempel visas hur du hämtar och itererar över blobens taggar.
async function getTags(containerClient, blobName) {
// Create blob client from container client
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]}`);
}
}
Filtrera och hitta data med blobindextaggar
Du kan använda indextaggar för att hitta och filtrera data om koden har auktoriserad åtkomst till blobdata via någon av följande mekanismer:
- Säkerhetsobjekt som har tilldelats en Azure RBAC-roll med åtgärden Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . Lagringsblobdataägaren är en inbyggd roll som innehåller den här åtgärden.
- Signatur för delad åtkomst (SAS) med behörighet att filtrera blobar efter taggar (
f
behörighet) - Kontonyckel
Mer information finns i Hitta data med hjälp av blobindextaggar.
Kommentar
Du kan inte använda indextaggar för att hämta tidigare versioner. Taggar för tidigare versioner skickas inte till blobindexmotorn. Mer information finns i Villkor och kända problem.
Data efterfrågas med ett JSON-objekt som skickas som en sträng. Egenskaperna behöver inte ha ytterligare strängcitat, men värdena behöver ytterligare strängcitat.
I följande tabell visas några frågesträngar:
Frågesträng för taggar (tagOdataQuery) | beskrivning |
---|---|
id='1' AND project='billing' |
Filtrera blobar över alla containrar baserat på dessa två egenskaper |
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' |
Filtrera blobar över alla containrar baserat på strikt egenskapsvärde för owner och datumintervall för createdOn egenskapen. |
@container = 'my-container' AND createdBy = 'Jill' |
Filtrera efter container och specifik egenskap. I den här frågan createdBy är en textmatchning och anger inte någon auktoriseringsmatchning via Active Directory. |
Om du vill hitta blobar skapar du en BlobClient och använder sedan följande metod:
I följande exempel hittas alla blobar som matchar parametern 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)}`);
}
}
}
Och exempelutdata för den här funktionen visar de matchade blobarna och deras taggar, baserat på console.log-koden i föregående funktion:
Response |
---|
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"set-tags-1650565920363"} |
Resurser
Mer information om hur du använder indextaggar för att hantera och hitta data med hjälp av Azure Blob Storage-klientbiblioteket för JavaScript finns i följande resurser.
REST API-åtgärder
Azure SDK för JavaScript innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta JavaScript-paradigm. Klientbiblioteksmetoderna för att hantera och använda blobindextaggar använder följande REST API-åtgärder:
- Hämta blobtaggar (REST API)
- Ange blobtaggar (REST API)
- Hitta blobar efter taggar (REST API)
Kodexempel
Klientbiblioteksresurser
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för