Blob-eigenschappen en -metagegevens beheren met Go
Naast de gegevens die ze bevatten, ondersteunen blobs systeemeigenschappen en door de gebruiker gedefinieerde metagegevens. In dit artikel wordt beschreven hoe u systeemeigenschappen en door de gebruiker gedefinieerde metagegevens beheert met behulp van de Azure Storage-clientmodule voor Go.
Vereisten
- Azure-abonnement: u kunt een gratis abonnement nemen
- Azure Storage-account: maak een opslagaccount
- Go 1.18+
Uw omgeving instellen
Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientmodule voor Go. De stappen omvatten module-installatie, het toevoegen van import
paden en het maken van een geautoriseerd clientobject. Zie Aan de slag met Azure Blob Storage en Go voor meer informatie.
Modules installeren
Installeer de azblob-module met behulp van de volgende opdracht:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Als u wilt verifiëren met Microsoft Entra ID (aanbevolen), installeert u de azidentity
module met behulp van de volgende opdracht:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Importpaden toevoegen
Voeg in uw codebestand de volgende importpaden toe:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Deze importpaden vertegenwoordigen het minimum dat nodig is om aan de slag te gaan. Voor sommige codevoorbeelden in dit artikel zijn mogelijk extra importpaden vereist. Zie Codevoorbeelden voor specifieke details en voorbeeldgebruik.
Een clientobject maken
Als u een app wilt verbinden met Blob Storage, maakt u een clientobject met behulp van azblob. NewClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential
autorisatie:
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
}
Autorisatie
Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om te kunnen werken met containereigenschappen of metagegevens. Voor autorisatie met Microsoft Entra-id (aanbevolen), hebt u ingebouwde Azure RBAC-rol Storage Blob-gegevenslezer of hoger nodig voor de get-bewerkingen, en Voor de inzender voor opslagblobgegevens of hoger voor de setbewerkingen. Zie de autorisatierichtlijnen voor Het instellen van blobeigenschappen (REST API) en het ophalen van blobeigenschappen (REST API) en het instellen van blobmetagegevens (REST API) of het ophalen van blobmetagegevens (REST API) voor meer informatie.
Over eigenschappen en metagegevens
Systeemeigenschappen: Systeemeigenschappen bestaan op elke Blob Storage-resource. Sommige kunnen worden gelezen of ingesteld, terwijl andere alleen-lezen zijn. Onder de covers komen sommige systeemeigenschappen overeen met bepaalde standaard HTTP-headers. De Azure Storage-clientbibliotheek voor Go onderhoudt deze eigenschappen voor u.
Door de gebruiker gedefinieerde metagegevens: door de gebruiker gedefinieerde metagegevens bestaan uit een of meer naam-waardeparen die u opgeeft voor een Blob Storage-resource. U kunt metagegevens gebruiken om extra waarden op te slaan met de resource. Metagegevenswaarden zijn alleen bedoeld voor uw eigen doeleinden en hebben geen invloed op het gedrag van de resource.
Naam/waardeparen van metagegevens zijn geldige HTTP-headers en moeten voldoen aan alle beperkingen voor HTTP-headers. Zie Namen van metagegevens voor meer informatie over naamgevingsvereisten voor metagegevens.
Notitie
Blob-indextags bieden ook de mogelijkheid om willekeurige door de gebruiker gedefinieerde sleutel-/waardekenmerken op te slaan naast een Azure Blob Storage-resource. Hoewel dit vergelijkbaar is met metagegevens, worden alleen blob-indextags automatisch geïndexeerd en doorzoekbaar gemaakt door de systeemeigen blobservice. Metagegevens kunnen niet worden geïndexeerd en opgevraagd, tenzij u een afzonderlijke service zoals Azure Search gebruikt.
Zie Gegevens in Azure Blob Storage beheren en zoeken met blobindex (preview) voor meer informatie over deze functie.
Eigenschappen instellen en ophalen
Als u eigenschappen voor een blob wilt instellen, roept u de volgende methode aan vanuit een blobclientobject:
Alle eigenschappen die niet expliciet zijn ingesteld, worden gewist. Als u bestaande eigenschappen wilt behouden, kunt u eerst de blobeigenschappen ophalen en deze vervolgens gebruiken om de headers te vullen die niet worden bijgewerkt.
In het volgende codevoorbeeld worden de BlobContentType
en BlobContentLanguage
systeemeigenschappen op een blob ingesteld, terwijl de bestaande eigenschappen behouden blijven:
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)
}
Als u eigenschappen op een blob wilt ophalen, roept u de volgende methode aan vanuit een blob-clientobject:
In het volgende codevoorbeeld worden de systeemeigenschappen van een blob opgehaald en worden enkele van de waarden weergegeven:
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)
}
Metagegevens instellen en ophalen
U kunt metagegevens opgeven als een of meer naam-waardeparen op een blob of containerresource. Als u metagegevens wilt instellen, verzendt u een kaart met naam-waardeparen met behulp van de volgende methode van een blobclientobject:
In het volgende codevoorbeeld worden metagegevens voor een blob ingesteld:
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)
}
Als u metagegevens wilt ophalen, roept u de Methode GetProperties aan vanuit een blob-clientobject en opent u het Metadata
veld in het antwoord. De GetProperties
methode haalt blobeigenschappen en metagegevens op door zowel de bewerking Blob-eigenschappen ophalen als de bewerking Blobmetagegevens ophalen aan te roepen.
In het volgende codevoorbeeld worden metagegevens op een blob gelezen en worden elke sleutel/waardepaar afgedrukt:
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)
}
}
Notitie
De codevoorbeelden in deze handleiding zijn bedoeld om u te helpen aan de slag te gaan met Azure Blob Storage en Go. U moet foutafhandeling en Context
-waarden wijzigen om te voldoen aan de behoeften van uw toepassing.
Resources
Zie de volgende resources voor meer informatie over het beheren van systeemeigenschappen en door de gebruiker gedefinieerde metagegevens met behulp van de Azure Blob Storage-clientmodule voor Go.
Codevoorbeelden
REST API-bewerkingen
De Azure SDK voor Go bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Go-paradigma's. De clientbibliotheekmethoden voor het beheren van systeemeigenschappen en door de gebruiker gedefinieerde metagegevens maken gebruik van de volgende REST API-bewerkingen:
- Blobeigenschappen instellen (REST API)
- Blobeigenschappen ophalen (REST API)
- Blobmetagegevens instellen (REST API)
- Blobmetagegevens ophalen (REST API)
Resources voor clientmodules
Gerelateerde inhoud
- Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Go. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Build your Go app voor meer informatie.