Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie programmgesteuert mit Daten interagieren, die in Azure Diensten gespeichert sind, indem Sie die Azure SDK für Go-Clientbibliotheken verwenden. Eine allgemeine Einführung in die Kombination von Verwaltungsbibliotheken und Clientbibliotheken finden Sie unter Overview der Azure SDK für Go-Verwaltungsbibliotheken. Dieser Artikel konzentriert sich auf die Muster der Go-Datenebene, die Sie nutzen, nachdem eine Ressource bereits vorhanden ist, und verweist auf Steuerungsebeneoperationen für Bereitstellung und Konfiguration.
Was ist die Azure Datenebene?
Die Azure Datenebene ist der Satz von APIs, die Sie für die Interaktion mit Daten innerhalb Azure-Diensten verwenden, einschließlich Hochladen von Blobs, Senden von Nachrichten, Abfragen von Datenbanken und Abrufen von geheimen Schlüsseln. Während die Steuerebene Ressourcen bereitstellt und konfiguriert, ruft Ihr Anwendungscode zur Laufzeit die Datenebene auf. Ein allgemeiner Go-Workflow besteht darin, den Steuerungsebenencode einmal in der Einrichtung oder Automatisierung zu verwenden und dann Datenebenenclients im Anwendungspfad beizubehalten, der täglich ausgeführt wird.
Die Azure SDK für Go macht die Datenebene über dienstspezifische Pakete wie azblob verfügbar. azservicebus, azeventhubs, azsecrets und azcosmos. Jedes Paket verbindet sich an eine bereits bereitgestellte Ressource und folgt einem einheitlichen Muster.
- Authentifizieren Sie sich mithilfe des
azidentityPakets. - Erstellen Sie einen typisierten Client unter Verwendung eines Dienstendpunkts oder einer Verbindungszeichenfolge.
- Rufen Sie Methoden auf dem Client auf, um Daten zu lesen, zu schreiben oder zu verarbeiten.
- Behandeln sie paginierte Ergebnisse und Fehler.
Zu den häufigen Szenarien für Go-Datenebenen-Vorgänge gehören:
- Hochladen und Herunterladen von Dateien aus Blob Storage
- Senden und Empfangen von Nachrichten mit Service Bus oder Event Hubs
- Speichern und Abfragen von Dokumenten in Cosmos DB
- Abrufen von Geheimnissen, Schlüsseln und Zertifikaten aus Key Vault
- Überwachen der Anwendungsleistung mit Application Insights
Authentifizierung
Datenebenenvorgänge unterstützen dieselben Anmeldeinformationstypen aus dem azidentitypaket, das für Steuerungsebenenvorgänge verwendet wird. Alle Anmeldeinformationstypen implementieren die azcore.TokenCredential Schnittstelle, sodass Sie sie austauschen können, ohne den Clientcode zu ändern.
Datenebenenclients verwenden einen Dienstendpunkt (URL oder Namespace) und eine Anmeldeinformation anstelle einer Abonnement-ID.
// Create credential that auto-discovers authentication
cred, err := azidentity.NewDefaultAzureCredential(nil)
// Blob Storage - pass the storage account URL
blobClient, err := azblob.NewClient("https://mystorageaccount.blob.core.windows.net/", cred, nil)
// Key Vault secrets - pass the vault URL
secretClient, err := azsecrets.NewClient("https://mykeyvault.vault.azure.net/", cred, nil)
// Service Bus - pass the fully qualified namespace
sbClient, err := azservicebus.NewClient("mynamespace.servicebus.windows.net", cred, nil)
Einige Dienste unterstützen auch Verbindungszeichenfolgen für Umgebungen, in denen die tokenbasierte Authentifizierung nicht verfügbar ist:
// Connection string authentication (when token auth is not available)
client, err := azservicebus.NewClientFromConnectionString(connectionString, nil)
Verwenden Sie für Produktionsworkloads, die in Azure ausgeführt werden, verwaltete Identität. Bei der lokalen Entwicklung entdeckt DefaultAzureCredential automatisch Anmeldeinformationen aus az login, Umgebungsvariablen oder anderen Quellen.
Eine vollständige Anleitung zu Anmeldeinformationstypen und bewährten Methoden finden Sie in Authentication mit der Azure SDK für Go und der Dokumentation zum azidentity-Paket.
Paginierung
Viele Datenebenenvorgänge geben Sammlungen zurück, die groß sein können. Das SDK verwendet ein Pagermuster für diese Vorgänge:
// Create a pager for listing large result sets
pager := client.NewListSecretPropertiesPager(nil)
// Iterate through pages until no more results
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
return err
}
for _, item := range page.Value {
fmt.Println(*item.ID)
}
}
Methoden, die Typen zurückgeben *Pager , folgen diesem Iterationsmuster für alle Datenebenenpakete.
Weitere Informationen zu Paginierung und anderen gängigen Mustern finden Sie in den Common-Verwendungsmustern in Azure SDK für Go.
Fehlerbehandlung
Datenebenenvorgänge geben strukturierte Fehler zurück, die Sie auf bestimmte Fehlercodes überprüfen können:
import "github.com/Azure/azure-sdk-for-go/sdk/azcore"
// Check if the error is an Azure service error with structured details
var respErr *azcore.ResponseError
if errors.As(err, &respErr) {
fmt.Printf("Error code: %s\n", respErr.ErrorCode)
fmt.Printf("Status code: %d\n", respErr.StatusCode)
}
Allgemeine Fehlercodes für die Datenebene umfassen BlobNotFound, , MessageLockLost, SecretNotFoundund RequestEntityTooLarge. Überprüfen Sie die Dokumentation für jeden Dienst für die vollständige Liste der Fehlercodes.
Ein Blob-Beispiel hochladen
Dieses Beispiel zeigt ein produktionsbereites Muster: Authentifizierung mit DefaultAzureCredential, das Erstellen eines Blob-Clients, das Hochladen von Daten mit einem Timeout und die Überprüfung. Dieses Muster gilt für alle Datenebene-Clients. Tauschen Sie den Dienstendpunkt und den Clienttyp aus, um ihn für Service Bus, Event Hubs, Cosmos DB oder Key Vault anzupassen.
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
func main() {
accountURL := "https://<storage-account-name>.blob.core.windows.net/"
containerName := "demo"
blobName := "hello.txt"
data := []byte("hello from Go")
// Create credential that auto-discovers authentication
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to create credential: %v", err)
}
// Set a timeout to prevent hanging on network issues
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
// Create a client for the storage account
client, err := azblob.NewClient(accountURL, cred, nil)
if err != nil {
log.Fatalf("failed to create blob client: %v", err)
}
// Upload data directly from a byte slice
_, err = client.UploadBuffer(ctx, containerName, blobName, data, nil)
if err != nil {
log.Fatalf("failed to upload blob: %v", err)
}
fmt.Printf("uploaded %s to container %s\n", blobName, containerName)
}
Blob Storage
Das Paket azblob bietet Datenebenenzugriff auf Azure Blob Storage, einen massiv skalierbaren Objektspeicherdienst. Dieses Paket wird von Ihrer Anwendung zur Laufzeit zum Lesen und Schreiben von Daten verwendet. Verwenden Sie das separate armstorage Steuerebenenpaket, um Speicherkonten und Container bereitzustellen.
Verwenden Sie sie zum Hochladen und Herunterladen von Dateien und Dokumenten, zum Auflisten und Verwalten von Blobs und Containern, zum Festlegen von Metadaten- und Inhaltseigenschaften, zum Implementieren paralleler Uploads für große Dateien und zum Erstellen von Datenverarbeitungspipelines.
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Informationen zu den ersten Schritten finden Sie unter Quickstart: Azure Blob Storage Clientmodul für Go.
Die Paketdokumentation finden Sie in der azblob-Paketreferenz.
Cosmos DB
Das Paket azcosmos bietet Datenebenenzugriff auf Azure Cosmos DB, eine global verteilte, multimodellbasierte Datenbank. Verwenden Sie sie zum Erstellen von Anwendungen, die Lese- und Schreibvorgänge mit geringer Latenz in beliebiger Größenordnung benötigen.
Verwenden Sie sie zum Ausführen von CRUD-Vorgängen für Dokumente, Ausführen von SQL-Abfragen für Container, Verwalten von Partitionierungsstrategien für effizienten Datenzugriff, Behandeln der Paginierung über große Resultsets und Ausführen von Batchvorgängen mit mehreren Elementen.
go get github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos
Informationen zu den ersten Schritten finden Sie unter Quickstart: Verwenden von Azure Cosmos DB für NoSQL mit Azure SDK für Go.
Die Paketdokumentation finden Sie in der azcosmos-Paketreferenz.
Event Hubs
Das Paket azeventhubs bietet Datenzugriff auf Azure Event Hubs – ein Echtzeitdatenaufnahmedienst für Streaming mit hoher Durchsatz.
Verwenden Sie es zum Senden von Ereignissen mit Batch-Verarbeitung für effizienten Durchsatz, zum Empfangen und Verarbeiten von Ereignissen mithilfe von Verbrauchergruppen, zum Verwalten der Partitionszuweisung und Prüfpunkterstellung, zum Routen von Ereignissen mithilfe von Partitionsschlüsseln zur Reihenfolgesicherung und zum Erstellen von Log-Aufnahme- und Telemetrie-Pipelines.
go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
Informationen zu den ersten Schritten finden Sie in der Schnellstartanleitung: Senden von Ereignissen an oder Empfangen von Ereignissen von Event Hubs mithilfe von Go.
Die Paketdokumentation finden Sie in der Paketreferenz azeventhubs.
Key Vault
Die azsecrets, azkeys und azcertificates bieten Datenebenenzugriff auf Azure Key Vault. Diese Pakete nutzt Ihre Anwendung zur Laufzeit, um Geheimnisse abzurufen und kryptografische Vorgänge auszuführen. Verwenden Sie das separate armkeyvault Steuerebenenpaket, um Tresorinstanzen bereitzustellen und zu konfigurieren.
Verwenden Sie sie zum Abrufen und Festlegen geheimer Schlüssel (Datenbank-Kennwörter, API-Schlüssel), erstellen und verwalten Kryptografieschlüssel zum Signieren und Verschlüsseln, Verwalten von TLS/SSL-Zertifikaten mit automatischer Erneuerung, Nachverfolgen geheimer Versionen und Implementieren von Rotationsstrategien und Cacheschlüsseln, um Latenz und API-Aufrufe zu reduzieren.
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates
Informationen zu den ersten Schritten mit Key Vault finden Sie unter Quickstart: Azure Key Vault Zertifikatclientbibliothek für Go.
Die Paketdokumentation finden Sie unter azsecrets, azkeys und azcertificates Paketverweise.
Service Bus
Das paket azservicebus bietet Datenebenenzugriff auf Azure Service Bus – einen vollständig verwalteten Nachrichtenbroker für eine zuverlässige asynchrone Kommunikation.
Verwenden Sie sie zum Senden und Empfangen von Nachrichten in Warteschlangen für die Point-to-Point-Kommunikation, veröffentlichen und abonnieren Sie Themen für Fanoutmuster, senden Sie Batches von Nachrichten für einen effizienten Durchsatz, planen Sie Nachrichten für die zukünftige Zustellung und implementieren Sie lange Abfragen von Verbrauchern mit Abschluss und Abbruch von Nachrichten.
go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus
Informationen zu den ersten Schritten mit Azure Service Bus finden Sie unter Quickstart: Senden von Nachrichten an und Empfangen von Nachrichten aus Azure Service Bus Warteschlangen (Go).
Die Paketdokumentation finden Sie in der azservicebus-Paketreferenz.
Anwendungsanalysen
Das Modul ApplicationInsights-Go bietet Telemetrieintegration mit Azure-Anwendung Insights - Azure APM-Dienst (Application Performance Monitoring).
Verwenden Sie es, um benutzerdefinierte Ereignisse und Metriken zu verfolgen, API-Antwortzeiten und -Fehler zu überwachen, eine verteilte Ablaufverfolgung über Dienste hinweg zu implementieren, Ausnahmen mit kontextbezogenen Eigenschaften zu protokollieren und das Volumen der Telemetrie mithilfe von Sampling zu steuern.
go get github.com/microsoft/ApplicationInsights-Go
Die Dienstdokumentation finden Sie in der Übersicht über Application Insights.