Verwenden der Verwaltungsbibliotheken des Azure SDK für Go

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 lernen Sie die grundlegenden Schritte zur Verwendung der Verwaltungsbibliotheken für die Interaktion mit Azure-Ressourcen kennen.

Installieren von Go-Paketen

In den meisten Projekten installieren Sie die Go-Pakete für die 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. Sie erstellen in Ihrem Go-Code 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 beispielsweise das Paket armnetwork, und erstellen Sie einen VirtualNetwork-Client zum Verwalten von VNet-Ressourcen.

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:

  1. Navigieren Sie zur Referenzdokumentation zum Azure SDK für Go.
  2. Durchsuchen Sie die Seite nach dem Paket. (Drücken <STRG+F> erweitert automatisch alle Knoten auf der Seite für die Suche.)
  3. Wählen Sie das Paket aus.
  4. Suchen Sie auf der Seite des Pakets nach dem Typ.
  5. 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:

  1. Navigieren Sie zu der Standard Azure SDK für go-Referenzdokumentation zu pkg.go.dev.
  2. Klicken Sie auf STRG+F>, und geben Sie< die EINGABETASTE einresourcemanager/resources/armresources. Während Sie den Suchbegriff eingeben, wird eine enge Übereinstimmung mit dem Ressourcen-/Armresources-Paket angezeigt.
  3. Wählen Sie das entsprechende Paket für Ihre Anwendung aus.
  4. 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.
  5. 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. Ihr Code ruft dann eine synchrone Pollerfunktion auf, die eine Antwort zurückgibt, wenn die ursprüngliche asynchrone Funktion abgeschlossen wurde.

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:

Nächste Schritte