Udostępnij za pośrednictwem


Używanie tagów indeksów obiektów blob do zarządzania danymi i znajdowania ich za pomocą języka Go

W tym artykule pokazano, jak używać tagów indeksów obiektów blob do zarządzania danymi i znajdowania ich przy użyciu modułu klienta usługi Azure Storage dla języka Go.

Wymagania wstępne

Konfigurowanie środowiska

Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z modułem klienta usługi Azure Blob Storage dla języka Go. Kroki obejmują instalację modułu, dodawanie import ścieżek i tworzenie autoryzowanego obiektu klienta. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do usługi Azure Blob Storage i Go.

Instalowanie modułów

Zainstaluj moduł azblob przy użyciu następującego polecenia:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Aby uwierzytelnić się przy użyciu identyfikatora Entra firmy Microsoft (zalecane), zainstaluj azidentity moduł przy użyciu następującego polecenia:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Dodawanie ścieżek importu

W pliku kodu dodaj następujące ścieżki importu:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Niektóre przykłady kodu w tym artykule mogą wymagać dodatkowych ścieżek importu. Aby uzyskać szczegółowe informacje i przykładowe użycie, zobacz Przykłady kodu.

Tworzenie obiektu klienta

Aby połączyć aplikację z usługą Blob Storage, utwórz obiekt klienta przy użyciu polecenia azblob. NewClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:

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
}

Autoryzacja

Mechanizm autoryzacji musi mieć niezbędne uprawnienia do pracy z tagami indeksu obiektów blob. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej kontroli dostępu opartej na rolach platformy Azure właściciela danych obiektu blob usługi Storage lub nowszego. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące pobierania tagów obiektów blob, ustawiania tagów obiektów blob lub znajdowania obiektów blob według tagów.

Informacje o tagach indeksu obiektów blob

Tagi indeksu obiektów blob kategoryzują dane na koncie magazynu przy użyciu atrybutów tagów klucz-wartość. Te tagi są automatycznie indeksowane i uwidaczniane jako indeks wielowymiarowy z możliwością wyszukiwania w celu łatwego znajdowania danych. W tym artykule przedstawiono sposób ustawiania, pobierania i znajdowania danych przy użyciu tagów indeksu obiektów blob.

Tagi indeksu obiektów blob nie są obsługiwane dla kont magazynu z włączoną hierarchiczną przestrzenią nazw. Aby dowiedzieć się więcej o funkcji tagu indeksu obiektów blob wraz ze znanymi problemami i ograniczeniami, zobacz Zarządzanie danymi obiektów blob platformy Azure i znajdowanie ich za pomocą tagów indeksu obiektów blob.

Ustawianie tagów

Tagi indeksu można ustawić, jeśli kod ma autoryzowany dostęp do danych obiektów blob za pomocą jednego z następujących mechanizmów:

Aby uzyskać więcej informacji, zobacz Ustawianie tagów indeksu obiektów blob.

Tagi można ustawić przy użyciu następującej metody:

Tagi określone w tej metodzie zastępują wszystkie istniejące tagi. Jeśli istniejące wartości muszą być zachowane, należy je pobrać i dołączyć do wywołania tej metody. W poniższym przykładzie pokazano, jak ustawić tagi:

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)
}

Wszystkie tagi można usunąć, wywołując bez SetTags tagów, jak pokazano w poniższym przykładzie:

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)
}

Pobieranie tagów

Tagi indeksu można uzyskać, jeśli kod ma autoryzowany dostęp do danych obiektów blob za pomocą jednego z następujących mechanizmów:

Aby uzyskać więcej informacji, zobacz Pobieranie i wyświetlanie listy tagów indeksów obiektów blob.

Tagi można uzyskać przy użyciu następującej metody:

W poniższym przykładzie pokazano, jak pobrać i iterować tagi obiektu 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)
    }
}

Filtrowanie i znajdowanie danych za pomocą tagów indeksu obiektów blob

Tagi indeksu umożliwiają znajdowanie i filtrowanie danych, jeśli kod ma autoryzowany dostęp do danych obiektów blob za pomocą jednego z następujących mechanizmów:

Aby uzyskać więcej informacji, zobacz Znajdowanie danych przy użyciu tagów indeksu obiektów blob.

Uwaga

Nie można użyć tagów indeksu do pobrania poprzednich wersji. Tagi dla poprzednich wersji nie są przekazywane do aparatu indeksowania obiektów blob. Aby uzyskać więcej informacji, zobacz Warunki i znane problemy.

Dane obiektów blob można filtrować na podstawie tagów indeksu przy użyciu następującej metody:

Poniższy przykład znajduje i wyświetla listę wszystkich obiektów blob oznaczonych jako obraz:

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)
    }
}

Uwaga

Przykłady kodu w tym przewodniku ułatwiają rozpoczęcie pracy z usługami Azure Blob Storage i Go. Należy zmodyfikować obsługę błędów i Context wartości, aby spełniały potrzeby aplikacji.

Zasoby

Aby dowiedzieć się więcej na temat używania tagów indeksu do zarządzania danymi i znajdowania ich przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Go, zobacz następujące zasoby.

Przykłady kodu

Operacje interfejsu API REST

Zestaw Azure SDK dla języka Go zawiera biblioteki oparte na interfejsie API REST platformy Azure, które umożliwiają interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Go. Metody biblioteki klienta do zarządzania tagami indeksów obiektów blob i korzystania z nich korzystają z następujących operacji interfejsu API REST:

Zasoby modułu klienta

Zobacz też