Zarządzanie właściwościami i metadanymi obiektów blob za pomocą języka Go
Oprócz danych, które zawierają, obiekty blob obsługują właściwości systemu i metadane zdefiniowane przez użytkownika. W tym artykule pokazano, jak zarządzać właściwościami systemu i metadanymi zdefiniowanymi przez użytkownika 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"
)
Te ścieżki importu reprezentują minimum wymagane do rozpoczęcia pracy. 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 właściwościami kontenera lub metadanymi. W przypadku autoryzacji przy użyciu identyfikatora entra firmy Microsoft (zalecane) potrzebujesz wbudowanej roli Czytelnik danych obiektu blob usługi Storage usługi Storage lub nowszego w przypadku operacji pobierania oraz współautora danych obiektu blob usługi Storage lub nowszego dla operacji zestawu . Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące ustawiania właściwości obiektów blob (interfejs API REST), Uzyskiwanie właściwości obiektu blob (interfejs API REST), Ustawianie metadanych obiektu blob (interfejs API REST) lub Pobieranie metadanych obiektu blob (interfejs API REST).
Informacje o właściwościach i metadanych
Właściwości systemu: właściwości systemu istnieją w każdym zasobie usługi Blob Storage. Niektóre z nich mogą być odczytywane lub ustawiane, a inne są tylko do odczytu. Pod osłonami niektóre właściwości systemowe odpowiadają pewnym standardowym nagłówkom HTTP. Biblioteka klienta usługi Azure Storage dla języka Go obsługuje te właściwości.
Metadane zdefiniowane przez użytkownika: metadane zdefiniowane przez użytkownika składają się z co najmniej jednej pary nazwa-wartość określonej dla zasobu usługi Blob Storage. Za pomocą metadanych można przechowywać dodatkowe wartości z zasobem. Wartości metadanych są przeznaczone tylko do własnych celów i nie mają wpływu na zachowanie zasobu.
Pary nazwa/wartość metadanych są prawidłowymi nagłówkami HTTP i powinny być zgodne ze wszystkimi ograniczeniami dotyczącymi nagłówków HTTP. Aby uzyskać więcej informacji na temat wymagań dotyczących nazewnictwa metadanych, zobacz Nazwy metadanych.
Uwaga
Tagi indeksu obiektów blob zapewniają również możliwość przechowywania dowolnych atrybutów klucza/wartości zdefiniowanych przez użytkownika wraz z zasobem usługi Azure Blob Storage. Podobnie jak w przypadku metadanych, tylko tagi indeksu obiektów blob są automatycznie indeksowane i możliwe do przeszukiwania przez natywną usługę obiektów blob. Metadanych nie można indeksować i wykonywać zapytań, chyba że korzystasz z oddzielnej usługi, takiej jak Azure Search.
Aby dowiedzieć się więcej na temat tej funkcji, zobacz Zarządzanie danymi i znajdowanie ich w usłudze Azure Blob Storage za pomocą indeksu obiektów blob (wersja zapoznawcza).
Ustawianie i pobieranie właściwości
Aby ustawić właściwości obiektu blob, wywołaj następującą metodę z obiektu klienta obiektu blob:
Wszystkie właściwości, które nie zostały jawnie ustawione, są czyszczone. Aby zachować wszystkie istniejące właściwości, możesz najpierw pobrać właściwości obiektu blob, a następnie użyć ich do wypełnienia nagłówków, które nie są aktualizowane.
Poniższy przykład kodu ustawia BlobContentType
właściwości systemu i BlobContentLanguage
dla obiektu blob, zachowując istniejące właściwości:
func setBlobProperties(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the existing blob properties
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Set the new blob properties and include existing properties
_, err = blobClient.SetHTTPHeaders(context.TODO(), blob.HTTPHeaders{
BlobContentType: to.Ptr("text/plain"),
BlobContentLanguage: to.Ptr("en-us"),
BlobContentEncoding: resp.ContentEncoding,
BlobContentDisposition: resp.ContentDisposition,
BlobCacheControl: resp.CacheControl,
}, nil)
handleError(err)
}
Aby pobrać właściwości obiektu blob, wywołaj następującą metodę z obiektu klienta obiektu blob:
Poniższy przykład kodu pobiera właściwości systemu obiektu blob i wyświetla niektóre wartości:
func getBlobProperties(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob properties
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the blob properties
fmt.Printf("Content type: %v\n", *resp.ContentType)
fmt.Printf("Content language: %v\n", *resp.ContentLanguage)
}
Ustawianie i pobieranie metadanych
Metadane można określić jako jedną lub więcej par nazwa-wartość w zasobie obiektu blob lub kontenera. Aby ustawić metadane, wyślij mapę zawierającą pary name-value przy użyciu następującej metody z obiektu klienta obiektu blob:
Poniższy przykład kodu ustawia metadane obiektu blob:
func setBlobMetadata(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Set the blob metadata
var metadata = make(map[string]*string)
metadata["key1"] = to.Ptr("value1")
metadata["key2"] = to.Ptr("value2")
_, err := blobClient.SetMetadata(context.TODO(), metadata, nil)
handleError(err)
}
Aby pobrać metadane, wywołaj metodę GetProperties z obiektu klienta obiektu blob i uzyskaj dostęp do Metadata
pola w odpowiedzi. Metoda GetProperties
pobiera właściwości obiektu blob i metadane, wywołując zarówno operację Pobierz właściwości obiektu blob, jak i operację Pobierz metadane obiektu blob.
Poniższy przykład kodu odczytuje metadane obiektu blob i drukuje każdą parę klucz/wartość:
func getBlobMetadata(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob properties, which includes metadata
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the blob metadata
for k, v := range resp.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
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 zarządzania właściwościami systemu i metadanymi zdefiniowanymi przez użytkownika przy użyciu modułu 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 właściwościami systemu i metadanymi zdefiniowanymi przez użytkownika używają następujących operacji interfejsu API REST:
- Ustawianie właściwości obiektu blob (interfejs API REST)
- Pobieranie właściwości obiektu blob (interfejs API REST)
- Ustawianie metadanych obiektu blob (interfejs API REST)
- Pobieranie metadanych obiektu blob (interfejs API REST)
Zasoby modułu klienta
Powiązana zawartość
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Go. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów na stronie Tworzenie aplikacji języka Go.