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
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — tworzenie konta magazynu
- Przejdź do wersji 1.18 lub nowszej
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:
- Podmiot zabezpieczeń, któremu przypisano rolę RBAC platformy Azure z akcją Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . Właściciel danych obiektu blob usługi Storage jest wbudowaną rolą obejmującą tę akcję.
- Sygnatura dostępu współdzielonego (SAS) z uprawnieniami dostępu do tagów obiektu blob (
t
uprawnienie) - Klucz konta
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:
- Podmiot zabezpieczeń przypisany do roli RBAC platformy Azure z akcją Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . Właściciel danych obiektu blob usługi Storage jest wbudowaną rolą obejmującą tę akcję.
- Sygnatura dostępu współdzielonego (SAS) z uprawnieniami dostępu do tagów obiektu blob (
t
uprawnienie) - Klucz konta
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:
- Podmiot zabezpieczeń, który ma przypisaną rolę RBAC platformy Azure z akcją Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . Właściciel danych obiektu blob usługi Storage jest wbudowaną rolą obejmującą tę akcję.
- Sygnatura dostępu współdzielonego (SAS) z uprawnieniem do filtrowania obiektów blob według tagów (
f
uprawnienie) - Klucz konta
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
- Wyświetlanie przykładów kodu z tego artykułu (GitHub)
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:
- Pobieranie tagów obiektów blob (interfejs API REST)
- Ustawianie tagów obiektów blob (interfejs API REST)
- Znajdowanie obiektów blob według tagów (interfejs API REST)
Zasoby modułu klienta
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla