Verwalten von Containereigenschaften und -metadaten mit Go
Blobcontainer unterstützen neben den 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
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Go 1.18+
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 im Autorisierungsleitfaden für Get Container Properties (REST API), Set Container Metadata (REST API) oder Get Container Metadata (REST API).
Informationen zu Eigenschaften und Metadaten
Systemeigenschaften sind in jeder Blob Storage-Ressource vorhanden. Einige davon können gelesen oder festgelegt werden, während andere schreibgeschützt sind. Tatsächlich 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.
Abrufen von Containereigenschaften
Rufen Sie zum Abrufen von Containereigenschaften die folgende Methode über ein Containerclientobjekt auf:
Das folgende Codebeispiel ruft die Systemeigenschaften eines Containers ab und schreibt einige der Eigenschaftswerte in ein Konsolenfenster:
func getContainerProperties(client *azblob.Client, containerName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Get the container properties
resp, err := containerClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the container properties
fmt.Printf("Blob public access: %v\n", *resp.BlobPublicAccess)
fmt.Printf("Lease status: %v\n", *resp.LeaseStatus)
fmt.Printf("Lease state: %v\n", *resp.LeaseState)
fmt.Printf("Has immutability policy: %v\n", *resp.HasImmutabilityPolicy)
}
Festlegen und Abrufen von Metadaten
Sie können Metadaten als ein oder mehrere Name-Wert-Paare für eine Blob- oder Containerressource angeben. Rufen Sie zum Festlegen von Metadaten die folgende Methode über ein Containerclientobjekt auf:
Durch das Festlegen von Containermetadaten überschreiben Sie alle vorhandenen Metadaten, die dem Container zugeordnet sind. Es ist nicht möglich, ein einzelnes Name-Wert-Paar zu ändern.
Das folgende Codebeispiel legt die Metadaten für einen Container fest:
func setContainerMetadata(client *azblob.Client, containerName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Set the container metadata
var metadata = make(map[string]*string)
metadata["key1"] = to.Ptr("value1")
metadata["key2"] = to.Ptr("value2")
_, err := containerClient.SetMetadata(context.TODO(), nil)
handleError(err)
}
Rufen Sie zum Abrufen von Metadaten die folgende Methode über ein Containerclientobjekt auf:
Metadaten sind in der Antwort von GetProperties
enthalten. Im folgenden Beispiel werden Metadatenwerte gelesen und in ein Konsolenfenster geschrieben:
func getContainerMetadata(client *azblob.Client, containerName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Get the container properties, which includes metadata
resp, err := containerClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the container 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 Festlegen und Abrufen von Containereigenschaften und -metadaten mithilfe des Azure Blob Storage-Clientmoduls für Go finden Sie in den folgenden Ressourcen.
Codebeispiele
- Anzeigen von Codebeispielen aus diesem Artikel (GitHub)
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 Festlegen und Abrufen von Eigenschaften und Metadaten verwenden die folgenden REST-API-Vorgänge:
- Get Container Properties (REST-API)
- Set Container Metadata (REST-API)
- Get Container Metadata (REST-API)
Die get_container_properties
-Methode ruft Containereigenschaften und -metadaten ab, indem sowohl der Vorgang Containereigenschaften abrufen als auch der Vorgang Containermetadaten abrufen aufgerufen wird.
Clientmodulressourcen
Zugehöriger Inhalt
- 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.