Verwalten von Blobeigenschaften und Metadaten mit Go

Blobs unterstützen neben den darin enthaltenen Daten auch Systemeigenschaften und benutzerdefinierte Metadaten. In diesem Artikel erfahren Sie, wie Sie Systemeigenschaften und benutzerdefinierte Metadaten mithilfe des Azure Storage-Clientmoduls für Go verwalten.

Voraussetzungen

Erstellen Ihrer Umgebung

Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit dem Azure Blob Storage-Clientmodul für Go einrichten. Die Schritte umfassen die Modulinstallation, das Hinzufügen von import-Pfaden und das Erstellen eines autorisierten Clientobjekts. Ausführlichere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage und Go.

Installieren von Modulen

Verwenden Sie den folgenden Befehl, um das Modul azblob zu installieren:

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

Um sich mit Microsoft Entra ID zu authentifizieren (empfohlen), installieren Sie das azidentity-Modul mit dem folgenden Befehl:

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

Hinzufügen von Importpfaden

Fügen Sie in der Codedatei die folgenden Importpfade hinzu:

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

Dies sind die Importpfade, die mindestens für die ersten Schritte erforderlich sind. Einige Codebeispiele in diesem Artikel erfordern möglicherweise zusätzliche Importpfade. Spezifische Details und eine Beispielverwendung finden Sie unter Codebeispiele.

Erstellen eines Clientobjekts

Um eine App mit Blob Storage zu verbinden, erstellen Sie ein Clientobjekt mithilfe von azblob.NewClient. Das folgende Beispiel zeigt, wie Sie ein Clientobjekt mithilfe von DefaultAzureCredential für die Autorisierung erstellen:

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
}

Autorisierung

Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Arbeiten mit Containereigenschaften oder -metadaten verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Storage-Blobdatenleser für die get-Vorgänge und mindestens Mitwirkender an Storage-Blobdaten für die set-Vorgänge. Weitere Informationen finden Sie in den Autorisierungsanleitungen für Festlegen von Blobeigenschaften (REST-API), Abrufen von Blobeigenschaften (REST-API), Festlegen von Blobmetadaten (REST-API)oder Abrufen von Blobmetadaten (REST-API).

Informationen zu Eigenschaften und Metadaten

  • Systemeigenschaften: Systemeigenschaften sind in jeder Blobspeicherressource vorhanden. Einige davon können gelesen oder festgelegt werden, während andere schreibgeschützt sind. Darüber hinaus entsprechen einige Systemeigenschaften bestimmten HTTP-Standardheadern. Die Azure Storage-Clientbibliothek für Go verwaltet diese Eigenschaften für Sie.

  • Benutzerdefinierte Metadaten: Benutzerdefinierte Metadaten bestehen aus mindestens einem Name-Wert-Paar, das Sie für eine Blobspeicherressource angeben. Metadaten können verwendet werden, um zusätzliche Werte mit der Ressource zu speichern. Metadatenwerte sind nur für Ihre eigenen Zwecke bestimmt und wirken sich nicht auf das Verhalten der Ressource aus.

    Name/Wert-Paare für Metadaten sind gültige HTTP-Header und sollten allen Einschränkungen für HTTP-Header entsprechen. Weitere Informationen zu den Benennungsanforderungen für Metadaten finden Sie unter Metadatennamen.

Hinweis

Blobindextags bieten auch die Möglichkeit, beliebige benutzerdefinierte Schlüssel-Wert-Attribute zusammen mit einer Azure Blob Storage-Ressource zu speichern. Trotz der Ähnlichkeit mit Metadaten werden nur Blobindextags automatisch indiziert und durch den nativen Blob-Dienst suchbar gemacht. Metadaten können nicht indiziert und abgefragt werden, es sei denn, Sie verwenden einen separaten Dienst wie z. B. Azure Search.

Weitere Informationen zu dieser Funktion finden Sie unter Verwalten und Suchen von Daten in Azure Blob Storage mit dem Blobindex (Vorschau).

Festlegen und Abrufen von Eigenschaften

Rufen Sie zum Festlegen von Eigenschaften für ein Blob die folgende Methode über ein Blobclientobjekt auf:

Alle nicht explizit festgelegten Eigenschaften werden gelöscht. Um vorhandene Eigenschaften beizubehalten, können Sie zunächst die Blobeigenschaften abrufen und dann dazu verwenden, die Header aufzufüllen, die nicht aktualisiert werden.

Im folgenden Codebeispiel werden die Systemeigenschaften BlobContentType und BlobContentLanguage für ein Blob festgelegt, wobei die vorhandenen Eigenschaften beibehalten werden:

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

Rufen Sie zum Abrufen von Eigenschaften für ein Blob die folgende Methode über ein Blobclientobjekt auf:

Im folgenden Codebeispiel werden die Systemeigenschaften eines Blobs abgerufen und einige der Werte angezeigt:

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

Festlegen und Abrufen von Metadaten

Sie können Metadaten als ein oder mehrere Name-Wert-Paare für eine Blob- oder Containerressource angeben. Um Metadaten festzulegen, senden Sie eine Zuordnung mit Name/Wert-Paaren mittels der folgenden Methode über ein Blobclientobjekt:

Das folgende Codebeispiel legt die Metadaten für ein Blob fest:

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

Rufen Sie zum Abrufen von Metadaten die GetProperties--Methode über ein Blobclientobjekt auf, und greifen Sie in der Antwort auf das Feld Metadata zu. Die GetProperties-Methode ruft Blobeigenschaften und Metadaten ab, indem sowohl der Vorgang Blobeigenschaften abrufen als auch der Vorgang Blobmetadaten abrufen aufgerufen wird.

Im folgenden Codebeispiel werden Metadaten für ein Blob gelesen und jedes Schlüssel-Wert-Paar ausgegeben:

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

Hinweis

Die Codebeispiele in diesem Leitfaden sollen Ihnen bei den ersten Schritten mit Azure Blob Storage und Go helfen. Sie sollten die Fehlerbehandlung und Context-Werte so ändern, dass sie den Anforderungen Ihrer Anwendung entsprechen.

Ressourcen

Weitere Informationen zum Verwalten von Systemeigenschaften und benutzerdefinierten Metadaten mithilfe des Azure Blob Storage-Clientmoduls für Go finden Sie in den folgenden Ressourcen.

Codebeispiele

REST-API-Vorgänge

Das Azure SDK für Go enthält Bibliotheken, die auf der Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Go-Paradigmen. Die Methoden der Clientbibliothek zum Verwalten von Systemeigenschaften und benutzerdefinierten Metadaten verwenden die folgenden REST-API-Vorgänge:

Clientmodulressourcen

  • Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Go. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Go-App.