Übersicht über das Azure SDK für Go-Verwaltungsbibliotheken
Wie im Artikel Was ist das Azure SDK für Go? erläutert, enthält das Azure SDK für Go eine Reihe von Verwaltungs- und Clientbibliotheken. Die Verwaltungsbibliotheken haben viele Funktionen gemeinsam, etwa Unterstützung von Azure-Identitäten, HTTP-Pipeline und Fehlerbehandlung. Die vollständige Liste der Verwaltungsbibliotheken finden Sie auf der Modulseite des Azure SDK für Go.
In diesem Artikel erfahren Sie, wie Sie die Verwaltungsbibliotheken für die Interaktion mit Azure-Ressourcen verwenden.
Installieren von Go-Paketen
In den meisten Projekten installieren Sie die Go-Pakete für versionsverwaltung und Abhängigkeitsverwaltung.
Verwenden Sie zum Installieren eines Go-Pakets den Befehl go get
.
Zum Installieren des Pakets armcompute
führen Sie Folgendes an der Befehlszeile aus:
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute
In den meisten Go-Apps installieren Sie 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
Nach dem Herunterladen wird das Paket über die import
-Anweisung in Ihre App importiert:
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 bei Azure
Damit Sie Code für ein Azure-Abonnement ausführen können, müssen Sie sich bei Azure authentifizieren. Das Paket azidentity unterstützt mehrere Optionen für die Authentifizierung bei Azure. Zu diesen Optionen gehören Client/Geheimnis, Zertifikat und verwaltete Identität.
Die Standardauthentifizierungsoption ist DefaultAzureCredential, die die weiter oben in diesem Artikel festgelegten Umgebungsvariablen verwendet. Im Go-Code erstellen Sie wie folgt ein azidentity
Objekt:
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
Erstellen eines Ressourcenverwaltungsclients
Sobald Sie über eine Anmeldeinformationen aus Azure Identity verfügen, erstellen Sie einen Client, um eine Verbindung mit dem Azure-Zieldienst herzustellen.
Angenommen, Sie möchten eine Verbindung mit dem Azure Compute-Dienst herstellen. Das Compute-Paket besteht aus mindestens einem Client. Ein Client gruppiert verschiedene verwandte APIs und bietet Zugriff auf ihre Funktionen innerhalb des angegebenen Abonnements. Sie erstellen einen oder mehrere Clients, um auf die erforderlichen APIs zuzugreifen.
Im folgenden Codeausschnitt wird der Typ armcompute.NewVirtualMachinesClient verwendet, um einen Client zum Verwalten virtueller Computer zu erstellen:
client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
// handle error
}
Das gleiche Muster wird verwendet, um eine Verbindung mit anderen Azure-Diensten herzustellen. Installieren Sie z. B. das Armnetwork-Paket , und erstellen Sie einen virtuellen Netzwerkclient zum Verwalten von VNET-Ressourcen (Virtual Network).
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("SubID", cred, nil)
if err != nil {
// handle error
}
}
Verwenden der Referenzdokumentation zum Azure SDK für Go
Nach der Instanziierung werden mithilfe von Clients API-Aufrufe für Ihre Azure-Ressourcen ausgeführt. Bei Szenarien zur Ressourcenverwaltung handelt es sich bei den meisten Anwendungsfällen um CRUD-Vorgänge (Create/Read/Update/Delete, Erstellen/Lesen/Aktualisieren/Löschen).
Führen Sie zum Nachschlagen der Vorgänge für einen bestimmten Typ die folgenden Schritte aus:
- Navigieren Sie zur Referenzdokumentation zum Azure SDK für Go.
- Durchsuchen Sie die Seite nach dem Paket. (Drücken <STRG+F> erweitert automatisch alle Knoten auf der Seite für die Suche.)
- Wählen Sie das Paket aus.
- Suchen Sie auf der Seite des Pakets nach dem Typ.
- Lesen Sie die Beschreibung des Typs und Informationen zu seiner Verwendung in Ihrem Go-Code.
Sie können die URL auch manuell erstellen, indem Sie den Namen des Pakets an github.com/Azure/azure-sdk-for-go/sdk/
anfügen.
Wenn Sie beispielsweise nach der Referenzdokumentation zu compute/armcompute
suchen, lautet die URL github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute
.
Das folgende Beispiel zeigt, wie Sie die Referenzdokumentation für Azure-Ressourcengruppenvorgänge finden:
- Navigieren Sie zu der Hauptdokumentation des Azure SDK für go zu pkg.go.dev.
- Wählen Sie STRG+F> aus, und geben Sie< ein
resourcemanager/resources/armresources
. Während Sie den Suchbegriff eingeben, wird eine enge Übereinstimmung mit dem Ressourcen-/Armresources-Paket angezeigt. - Wählen Sie das entsprechende Paket für Ihre Anwendung aus.
- Lesen Sie die Abschnitte „Erste Schritte“, oder suchen Sie nach einem bestimmten Vorgang. Die Suche nach dem Begriff "resourcegroupsclient.create" (wenn Sie eine Ressourcengruppe erstellen möchten) führt Sie beispielsweise zur CreateOrUpdate-Funktion.
- Zu diesem Zeitpunkt können Sie nachlesen, wie Sie den API-Aufruf zum Erstellen einer Azure-Ressourcengruppe durchführen.
Zeitintensive Vorgänge
Da einige Vorgänge sehr lange dauern können, enthalten die Verwaltungsbibliotheken Funktionen zur Unterstützung von zeitintensiven Vorgängen (Long-Running Operations, LRO) über asynchrone Aufrufe. Diese Funktionsnamen beginnen mit Begin
. Beispiele für dieses Muster sind BeginCreate
und BeginDelete
.
Da diese Funktionen asynchron sind, wird Ihr Code erst blockiert, wenn die Funktion ihre Aufgabe abgeschlossen hat. Stattdessen gibt die Funktion sofort ein Objekt vom Typ poller zurück. Der Code ruft dann eine synchrone Pollerfunktion auf, die beim Abschluss der ursprünglichen asynchronen Funktion zurückgegeben wird.
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:
- Die Funktion
PollUntilDone
erfordert ein Abrufintervall, das angibt, wie oft das Abrufen des Status versucht werden soll. - Das Intervall ist in der Regel kurz. Empfohlene Intervalle finden Sie in der Dokumentation für die jeweilige Azure-Ressource.
- Der Abschnitt zu zeitintensiven Vorgängen auf der Seite mit den Entwurfsrichtlinien zum Go Azure SDK enthält ein komplexeres Beispiel und allgemeine Richtlinien für zeitintensive Vorgänge.