Arbeta med Azure SDK för Go-hanteringsbibliotek

Som beskrivs i artikeln Vad är Azure SDK för Go?, innehåller Azure SDK för Go en uppsättning hanterings- och klientbibliotek. Hanteringsbiblioteken delar många funktioner, till exempel Stöd för Azure Identity, HTTP-pipeline och felhantering. Du hittar den fullständiga listan över hanteringsbiblioteken på azure SDK för Go-modulsidan.

I den här artikeln får du lära dig de grundläggande stegen i hur du använder hanteringsbiblioteken för att interagera med Azure-resurser.

Installera Go-paket

I de flesta projekt installerar du Go-paketen för versionshantering och beroendehantering.

Om du vill installera ett Go-paket använder du go get kommandot .

Om du till exempel vill installera armcompute paketet kör du följande på kommandoraden:

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute

I de flesta Go-appar installerar du följande paket för autentisering:

  • github.com/Azure/azure-sdk-for-go/sdk/azcore/to
  • github.com/Azure/azure-sdk-for-go/sdk/azidentity

Importera paket till din Go-kod

När paketet har laddats ned importeras det till din app via -instruktionen import :

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"
)

Autentisera till Azure

Om du vill köra kod mot en Azure-prenumeration måste du autentisera till Azure. Azidentity-paketet stöder flera alternativ för att autentisera till Azure. Dessa alternativ omfattar klient/hemlighet, certifikat och hanterad identitet.

Standardalternativet för autentisering är DefaultAzureCredential, som använder miljövariablerna som angavs tidigare i den här artikeln. I Go-koden skapar du ett azidentity objekt på följande sätt:

cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
  // handle error
}

Skapa en Resurshanteringsklient

När du har en autentiseringsuppgift från Azure Identity skapar du en klient för att ansluta till Azure-måltjänsten.

Anta till exempel att du vill ansluta till Azure Compute-tjänsten . Compute-paketet består av en eller flera klienter. En klient grupperar en uppsättning relaterade API:er, vilket ger åtkomst till dess funktioner i den angivna prenumerationen. Du skapar en eller flera klienter för att få åtkomst till de API:er som du behöver.

I följande kodfragment, armcompute. NewVirtualMachinesClient-typen används för att skapa en klient för att hantera virtuella datorer:

client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

Samma mönster används för att ansluta till andra Azure-tjänster. Du kan till exempel installera armnetwork-paketet och skapa en VirtualNetwork-klient för att hantera virtuella nätverksresurser (VNET).

client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

Kodexempel:

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
    }
}

Använda referensdokumentationen för Azure SDK for Go

När du har instansierat används klienter för att göra API-anrop mot dina Azure-resurser. För resurshanteringsscenarier är de flesta användningsfall crud-åtgärder (skapa/läsa/uppdatera/ta bort).

Gör följande för att söka efter åtgärder för en viss typ:

  1. Bläddra till referensdokumentationen för Azure SDK for Go.
  2. Sök efter paketet på sidan. (Tryck på <Ctrl+F> expanderar automatiskt alla noder på sidan för sökning.)
  3. Välj paketet.
  4. Sök efter typen på paketets sida.
  5. Läs typens beskrivning och information om dess användning i Go-koden.

Du kan också skapa URL:en manuellt genom att lägga till namnet på paketet till github.com/Azure/azure-sdk-for-go/sdk/.

Om du till exempel letar efter referensdokumentationen compute/armcompute är github.com/Azure/azure-sdk-for-go/sdk/compute/armcomputeURL:en .

I följande exempel visas hur du hittar referensdokumentationen för Azure-resursgruppsåtgärder:

  1. Bläddra till huvuddokumentationen för Azure SDK for Go på pkg.go.dev.
  2. Klicka på Ctrl+F> och ange resourcemanager/resources/armresources.< När du skriver sökordet ser du en nära matchning med paketet resurser/armresources .
  3. Välj lämpligt paket för ditt program.
  4. Läs igenom avsnitten "Komma igång" eller sök efter en specifik åtgärd. Om du till exempel söker efter termen "resourcegroupsclient.create" (om du vill skapa en resursgrupp) leder du till funktionen CreateOrUpdate.
  5. Nu kan du läsa hur du gör API-anropet för att skapa en Azure-resursgrupp.

Tidskrävande åtgärder

Eftersom vissa åtgärder kan ta lång tid att slutföra innehåller hanteringsbiblioteken funktioner som stöder långvariga åtgärder (LRO) via asynkrona anrop. Dessa funktionsnamn börjar med Begin. Exempel på det här mönstret är BeginCreate och BeginDelete.

Eftersom dessa funktioner är asynkrona blockeras inte koden förrän funktionen har slutfört sin uppgift. I stället returnerar funktionen ett pollerobjekt omedelbart. Koden anropar sedan en synkron pollerfunktion som returneras när den ursprungliga asynkrona funktionen har slutförts.

Följande kodfragment visar ett exempel på det här mönstret.

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.

Viktiga punkter:

  • Funktionen PollUntilDone kräver ett avsökningsintervall som anger hur ofta den ska försöka hämta statusen.
  • Intervallet är vanligtvis kort. Se dokumentationen för den specifika Azure-resursen för rekommenderade intervall.
  • LRO-avsnittet på sidan Designriktlinjer för Go Azure SDK har ett avancerat exempel på flytt och allmänna riktlinjer för LRO.

Nästa steg