Použití značek indexu objektů blob ke správě a hledání dat pomocí Go
Tento článek ukazuje, jak pomocí značek indexu objektů blob spravovat a vyhledávat data pomocí klientského modulu Azure Storage pro Go.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Go 1.18+
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s modulem klienta Azure Blob Storage pro Go. Kroky zahrnují instalaci modulu, přidání import
cest a vytvoření autorizovaného klientského objektu. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a Go.
Instalace modulů
Pomocí následujícího příkazu nainstalujte modul azblob:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Pokud se chcete ověřit pomocí Microsoft Entra ID (doporučeno), nainstalujte azidentity
modul pomocí následujícího příkazu:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Přidání cest importu
Do souboru kódu přidejte následující cesty importu:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Některé příklady kódu v tomto článku můžou vyžadovat další cesty importu. Konkrétní podrobnosti a ukázkové použití najdete v ukázkách kódu.
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte objekt klienta pomocí příkazu azblob. NewClient. Následující příklad ukazuje, jak vytvořit objekt klienta pro DefaultAzureCredential
autorizaci:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění pro práci se značkami indexu objektů blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete vlastníka dat objektů blob služby Storage nebo vyšší předdefinovanou roli Azure RBAC. Další informace najdete v pokynech k autorizaci pro získání značek objektů blob, nastavení značek objektů blob nebo hledání objektů blob podle značek.
O značkách indexu objektů blob
Značky indexu objektů blob kategorizují data v účtu úložiště pomocí atributů značek klíč-hodnota. Tyto značky se automaticky indexují a zveřejňují jako prohledávatelný multidimenzionální index, aby bylo možné snadno najít data. V tomto článku se dozvíte, jak nastavit, získat a najít data pomocí značek indexu objektů blob.
Značky indexu objektů blob nejsou podporované pro účty úložiště s povoleným hierarchickým oborem názvů. Další informace o funkci značky indexu objektů blob spolu se známými problémy a omezeními najdete v tématu Správa a vyhledání dat objektů blob pomocí značek indexu objektů blob.
Nastavení značek
Značky indexu můžete nastavit, pokud má váš kód autorizovaný přístup k datům objektů blob prostřednictvím jednoho z následujících mechanismů:
- Objekt zabezpečení, který má přiřazenou roli Azure RBAC s akcí Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . Vlastník dat objektu blob služby Storage je předdefinovaná role, která zahrnuje tuto akci.
- Sdílený přístupový podpis (SAS) s oprávněním pro přístup ke značek objektu blob (
t
oprávnění) - Klíč účtu
Další informace najdete v tématu Nastavení značek indexu objektů blob.
Značky můžete nastavit pomocí následující metody:
Značky zadané v této metodě nahradí všechny existující značky. Pokud existující hodnoty musí být zachovány, musí být staženy a zahrnuty do volání této metody. Následující příklad ukazuje, jak nastavit značky:
func setBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get existing tags for the blob if they need to be preserved
resp, err := blobClient.GetTags(context.TODO(), nil)
handleError(err)
tags := make(map[string]string)
for _, v := range resp.BlobTags.BlobTagSet {
tags[*v.Key] = *v.Value
}
// Add or modify blob tags
var updated_tags = make(map[string]*string)
updated_tags["tag1"] = to.Ptr("value1")
updated_tags["tag2"] = to.Ptr("value2")
// Combine existing tags with new tags
for k, v := range updated_tags {
tags[k] = *v
}
// Set blob tags
_, err = blobClient.SetTags(context.TODO(), tags, nil)
handleError(err)
}
Všechny značky můžete odebrat voláním SetTags
bez značek, jak je znázorněno v následujícím příkladu:
func clearBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Clear blob tags
_, err := blobClient.SetTags(context.TODO(), make(map[string]string), nil)
handleError(err)
}
Získání značek
Pokud má váš kód autorizovaný přístup k datům objektů blob, můžete získat značky indexu prostřednictvím jednoho z následujících mechanismů:
- Objekt zabezpečení, který má přiřazenou roli Azure RBAC s akcí Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . Vlastník dat objektu blob služby Storage je předdefinovaná role, která zahrnuje tuto akci.
- Sdílený přístupový podpis (SAS) s oprávněním pro přístup ke značek objektu blob (
t
oprávnění) - Klíč účtu
Další informace najdete v tématu Získání a výpis značek indexu objektů blob.
Značky můžete získat pomocí následující metody:
Následující příklad ukazuje, jak načíst a iterovat značky objektu blob:
func getBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob tags
resp, err := blobClient.GetTags(context.TODO(), nil)
handleError(err)
// Print the blob tags
for _, v := range resp.BlobTags.BlobTagSet {
fmt.Printf("Key: %v, Value: %v\n", *v.Key, *v.Value)
}
}
Filtrování a hledání dat pomocí značek indexu objektů blob
Pomocí značek indexu můžete vyhledávat a filtrovat data, pokud váš kód má autorizovaný přístup k datům objektů blob prostřednictvím jednoho z následujících mechanismů:
- Objekt zabezpečení, který má přiřazenou roli Azure RBAC s akcí Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . Vlastník dat objektu blob služby Storage je předdefinovaná role, která zahrnuje tuto akci.
- Sdílený přístupový podpis (SAS) s oprávněním k filtrování objektů blob podle značek (
f
oprávnění) - Klíč účtu
Další informace najdete v tématu Hledání dat pomocí značek indexu objektů blob.
Poznámka:
K načtení předchozích verzí nemůžete použít značky indexu. Značky pro předchozí verze se nepředávají do indexového modulu objektů blob. Další informace naleznete v tématu Podmínky a známé problémy.
Data objektů blob můžete filtrovat na základě značek indexu pomocí následující metody:
Následující příklad najde a vypíše všechny objekty blob označené jako obrázek:
func findBlobsByTags(client *azblob.Client, containerName string, blobName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Filter blobs by tags
where := "\"Content\"='image'"
opts := container.FilterBlobsOptions{MaxResults: to.Ptr(int32(10))}
resp, err := containerClient.FilterBlobs(context.TODO(), where, &opts)
handleError(err)
// Print the blobs found
for _, blobItem := range resp.FilterBlobSegment.Blobs {
fmt.Printf("Blob name: %v\n", *blobItem.Name)
}
}
Poznámka:
Ukázky kódu v této příručce vám pomůžou začít se službou Azure Blob Storage a Go. Měli byste upravit zpracování chyb a Context
hodnoty tak, aby vyhovovaly potřebám vaší aplikace.
Zdroje informací
Další informace o používání značek indexů ke správě a hledání dat pomocí klientské knihovny služby Azure Blob Storage pro Go najdete v následujících zdrojích informací.
Ukázky kódu
- Zobrazení ukázek kódu z tohoto článku (GitHub)
Operace rozhraní REST API
Sada Azure SDK for Go obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Go. Metody klientské knihovny pro správu a používání značek indexu objektů blob používají následující operace rozhraní REST API:
- Získání značek objektů blob (REST API)
- Nastavení značek objektů blob (REST API)
- Vyhledání objektů blob podle značek (REST API)
Prostředky klientského modulu
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro