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.
Die Azure SDK für Go umfasst Verwaltungsbibliotheken und Datenebenen-Clientbibliotheken. Dieser Artikel enthält eine Übersicht, sodass Sie verstehen können, was die Bibliotheken sind, wie sie in Azure Workflows passen und wo Sie als Nächstes zu go-spezifischen Mustern wechseln können.
Verwaltungsbibliotheken
Verwenden Sie die Verwaltungsbibliotheken, um Azure Ressourcen bereitzustellen, zu konfigurieren und zu steuern. Sie konzentrieren sich auf die Verwaltung der Ressourcen selbst und nicht auf die darin gespeicherten Daten. Verwaltungsbibliotheken führen Steuerebene-Vorgänge aus, die Azure-Ressourcen und Dienst-Konfigurationen verwalten. Typische Aufgaben umfassen:
- Erstellen oder Aktualisieren von Ressourcengruppen, virtuellen Netzwerken oder virtuellen Computern.
- Konfigurieren von Sicherheitseinstellungen, Identitäten, Zugriffsrichtlinien und Diagnose.
- Auflisten, Kategorisieren und Löschen von Azure Ressourcen in einem Abonnement.
- Automatisieren von Bereitstellungs-, Bereinigungs-, Compliance- und Plattformvorgängen.
Verwaltungsbibliothekspakete haben Namen wie armcompute, armnetworkund armkeyvault. Verwenden Sie Verwaltungsbibliotheken während der Setup-, Konfigurations- und Governancephasen eines Anwendungslebenszyklus. Suchen Sie für eine ausführliche Paketdokumentation auf pkg.go.dev nach dem Paket.
Clientbibliotheken
Verwenden Sie die Clientbibliotheken, wenn Ihre Go-Anwendung mit Daten oder Laufzeitoberflächen innerhalb eines bereits bereitgestellten Azure-Diensts arbeiten muss. Clientbibliotheken führen Datenebenenvorgänge aus, die mit den in einem Dienst gespeicherten oder ablaufenden Daten arbeiten. Typische Aufgaben umfassen:
- Hochladen und Herunterladen von Blobs aus einem Speicherkonto.
- Senden und Empfangen von Nachrichten mit Service Bus oder Event Hubs.
- Lesen, Schreiben oder Löschen von Datensätzen in einer Datenbank.
- Abrufen geheimer Schlüssel aus Key Vault.
- Ausführen von Abfragen oder Vorgängen gegen bereitgestellte Ressourcen.
Clientbibliothekspakete weisen Namen wie azblob, azstorage, azsecrets, , azservicebusund azeventhubs. Verwenden Sie Clientbibliotheken, nachdem Sie den zugrunde liegenden Azure Dienst bereits mithilfe von Verwaltungsbibliotheken bereitgestellt haben. Für ausführliche Paketdokumentation suchen Sie nach dem Paket auf pkg.go.dev.
Nutzung von Management- und Clientbibliotheken
Eine einzelne Go-Lösung kann sowohl Verwaltungs- als auch Clientbibliotheken über Steuerungs- und Datenebenen hinweg verwenden. Sie können z. B. während des Setups eine Verwaltungsbibliothek verwenden, um ein Speicherkonto (Steuerebene) zu erstellen und dann eine Clientbibliothek in der Anwendung zum Hochladen und Herunterladen von Blobs (Datenebene) zu verwenden. Wenn Sie die Unterscheidung verstehen, können Sie die richtige Bibliothek für jede Aufgabe in Ihrem Workflow auswählen.
Go-spezifische Muster und Beispiele für jede Ebene finden Sie in den folgenden Artikeln:
- Verwenden Sie das Azure SDK für Go für Steuerungsebenen-Operationen.
- Verwenden Sie das Azure SDK für Go für Datenflugoperationen.
Installieren von Go-Paketen
In den meisten Projekten installieren Sie die Go-Pakete für versionsverwaltung und Abhängigkeitsverwaltung.
Führen Sie den go get Befehl aus, um ein Go-Paket zu installieren.
Führen Sie beispielsweise den folgenden Befehl aus, um das armcompute Paket zu installieren:
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute
Installieren Sie in den meisten Go-Apps die folgenden Pakete für die Authentifizierung:
- github.com/Azure/azure-sdk-for-go/sdk/azcore/to
- github.com/Azure/azure-sdk-for-go/sdk/azidentity
Importieren von Paketen in Ihren Go-Code
Importieren Sie sie nach dem Herunterladen der Pakete mithilfe der import Anweisung in Ihre App:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)
Authentifizierung für Azure
Go-Apps, die Azure SDK-Bibliotheken verwenden, sollten sich mithilfe von Microsoft Entra ID mit der Azure-Identitätsbibliothek authentifizieren. Die tokenbasierte Authentifizierung ist sicherer und verwaltbarer als Verbindungszeichenfolgen oder Schlüssel. Die empfohlenen Anmeldeinformationen hängen davon ab, wo die App ausgeführt wird: Verwenden Sie verwaltete Identitäten für in Azure gehostete Apps, Entwickleranmeldeinformationen oder einen Dienstprinzipal für die lokale Entwicklung und einen Dienstprinzipal für die meisten lokalen Szenarien.
Die Standardauthentifizierungsoption ist DefaultAzureCredential, die zuvor in diesem Artikel festgelegte Umgebungsvariablen verwendet. Erstellen Sie in Ihrem Go-Code ein azidentity Objekt wie folgt:
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
Weitere Informationen zur Authentifizierung finden Sie unter Azure SDK for Go authentication.
Erstellen eines Ressourcenverwaltungsclients
Nachdem Sie eine Anmeldeinformation von Azure Identity erhalten haben, erstellen Sie einen Client, um eine Verbindung mit dem Zieldienst von Azure herzustellen.
Angenommen, Sie möchten eine Verbindung mit dem Azure ComputeDienst herstellen. Das Compute-Paket besteht aus einem oder mehreren Clients. Ein Client gruppiert eine Reihe verwandter APIs und ermöglicht den Zugriff auf seine Funktionalität innerhalb des angegebenen Abonnements. Sie erstellen einen oder mehrere Clients, um auf die erforderlichen APIs zuzugreifen.
Der folgende Code verwendet das armcompute. NewVirtualMachinesClient type to create a client to manage virtual machines:
client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
Weitere Informationen zum Verwalten von Azure Ressourcen mit Go finden Sie unter Use the Azure SDK for Go for control plane operations.
Verwenden Sie dasselbe Muster, um eine Verbindung mit anderen Azure-Diensten herzustellen. Installieren Sie z. B. das armnetwork-Paket, und erstellen Sie ein virtual network-Client, um virtuelle Netzwerkressourcen zu verwalten.
client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
Codebeispiel:
package main
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)
func main() {
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
}
Weitere Informationen zur Verwendung der Azure SDK für Azure-Dienste finden Sie unter Use the Azure SDK for Go for data plane operations.
Verwenden des Azure SDK für das Go-Repository
Nachdem Sie einen Client instanziiert haben, verwenden Sie ihn, um API-Aufrufe an Ihre Azure Ressourcen zu tätigen. Bei Ressourcenverwaltungsszenarien sind die meisten Anwendungsfälle CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren, Löschen).
Um Vorgänge für einen bestimmten Typ zu finden, durchsuchen Sie das Azure SDK für Go GitHub-Repository. Die SDK-Quelle ist im Verzeichnis sdk/ mit Verwaltungsbibliotheken unter sdk/resourcemanager/ und Clientbibliotheken in dienstspezifischen Ordnern wie sdk/storage/ und sdk/security/keyvault/ organisiert.
Führen Sie die folgenden Schritte aus, um die Quelle für einen bestimmten Typ zu suchen:
- Wechseln Sie zum Azure SDK für Go-Repository auf GitHub.
- Navigieren Sie zu
sdk/resourcemanager/für Verwaltungsbibliotheken, odersdk/für Clientbibliotheken. - Öffnen Sie den Dienstordner und dann den Paketordner. Beispiel:
sdk/resourcemanager/compute/armcompute/. - Suchen Sie die Quelldatei, die den benötigten Typ enthält. Clienttypen und deren Methoden befinden sich in der Regel in Dateien, die nach dem Client benannt sind, wie
virtualmachines_client.go. - Lesen Sie die Kommentare und Methodensignaturen des Typs für Verwendungsinformationen.
Sie können die URL auch direkt erstellen. Um beispielsweise die Quelle für Ressourcengruppenvorgänge zu finden, navigieren Sie zu https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/resourcemanager/resources/armresources.
In diesem Beispiel wird gezeigt, wie Sie die Quelle für Azure Ressourcengruppenvorgänge finden:
- Wechseln Sie zum Azure SDK Go-Repository auf GitHub.
- Navigieren Sie zu
sdk/resourcemanager/resources/armresources/. - Öffnen Sie
resource_groups_client.go, um den TypResourceGroupsClientund dessenCreateOrUpdate-Methode zu finden. - Lesen Sie die Kommentare und Parameter der Methode, um zu verstehen, wie der API-Aufruf vorgenommen wird.
Suchen Sie für generierte Referenzdokumentation nach dem Paket auf pkg.go.dev.
Zeitintensive Vorgänge
Einige Vorgänge dauern lange, bis sie abgeschlossen sind. Um diese Vorgänge zu verarbeiten, stellen die Verwaltungsbibliotheken Funktionen bereit, die lang laufende Vorgänge (LRO) durch asynchrone Aufrufe unterstützen. Diese Funktionsnamen beginnen mit Begin, wie zum Beispiel BeginCreate und BeginDelete.
Da diese Funktionen asynchron sind, blockiert Ihr Code nicht, während die Funktion ihre Aufgabe beendet. Stattdessen gibt die Funktion ein Pollerobjekt sofort zurück . Der Code ruft dann eine synchrone Pollerfunktion auf, die zurückkehrt, wenn die ursprüngliche asynchrone Funktion abgeschlossen ist.
Der folgende Codeausschnitt zeigt ein Beispiel für dieses Muster.
ctx := context.Background()
// Call an asynchronous function to create a client. The return value is a poller object.
poller, err := client.BeginCreate(ctx, "resource_identifier", "additional_parameter")
if err != nil {
// handle error...
}
// Call the poller object's PollUntilDone function that will block until the poller object
// has been updated to indicate the task has completed.
resp, err = poller.PollUntilDone(ctx, nil)
if err != nil {
// handle error...
}
// Print the fact that the LRO completed.
fmt.Printf("LRO done")
// Work with the response ("resp") object.
Die wichtigsten Punkte:
- Für die
PollUntilDoneFunktion ist ein Abrufintervall erforderlich, das angibt, wie oft versucht werden soll, den Status abzurufen. Die Interval wird standardmäßig auf 30 Sekunden festgelegt, wenn Sienilfür den Optionsparameter übergeben, aber Sie können sie basierend auf Ihren Anforderungen anpassen. - Das Intervall ist in der Regel kurz. Sehen Sie in der Dokumentation der konkreten Azure-Ressource nach, um die empfohlenen Intervalle zu erfahren.
- Der Abschnitt LRO auf der Seite "Go Azure SDK Design Guidelines enthält ein komplexeres Beispiel und allgemeine Richtlinien für LRO.
Weitere Informationen zu Mustern finden Sie in den Common-Verwendungsmustern in Azure SDK für Go.
Nächste Schritte
Weitere Informationen zu Authentifizierung, Client-Konstruktion, lang andauernden Operationen und dienstlichen exemplarischen Vorgehensweisen finden Sie in den ebenen-spezifischen Artikeln.
- Verwenden Sie das Azure SDK für Go für Steuerungsebenenvorgänge in managementorientierten Go-Workflows.
- Verwenden Sie das Azure SDK für Go für Datenebenenoperationen für Ablaufdatenzugriffsmuster, die häufig auf die Bereitstellung folgen.
Beispiele finden Sie unter Azure SDK for Go samples on GitHub.