Sdílet prostřednictvím


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

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ů:

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ů:

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ů:

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:

Prostředky klientského modulu

Viz také