Werken met de Azure SDK voor Go-beheerbibliotheken

Zoals uitgelegd in het artikel Wat is Azure SDK voor Go?, bevat Azure SDK voor Go een set beheer- en clientbibliotheken. De beheerbibliotheken delen veel functies, zoals azure-identiteitsondersteuning, HTTP-pijplijn en foutafhandeling. U vindt de volledige lijst met beheerbibliotheken op de pagina Azure SDK voor Go module.

In dit artikel leert u de basisstappen voor het gebruik van de beheerbibliotheken om te communiceren met Azure-resources.

Go-pakketten installeren

In de meeste projecten installeert u de Go-pakketten voor versiebeheer en afhankelijkheidsbeheer.

Gebruik de opdracht om een Go-pakket te go get installeren.

Als u bijvoorbeeld het pakket wilt armcompute installeren, moet u het volgende uitvoeren op de opdrachtregel:

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

In de meeste Go-apps installeert u de volgende pakketten voor verificatie en kernfunctionaliteit:

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

Pakketten importeren in uw Go-code

Zodra het pakket is gedownload, wordt het geïmporteerd in uw app via de import instructie :

import (
    "github.com/Azure/azure-sdk-for-go/sdk/armcore"
    "github.com/Azure/azure-sdk-for-go/sdk/resources/armresources"
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/to"
)

Authenticating to Azure

Als u code wilt uitvoeren voor een Azure-abonnement, moet u zich verifiëren bij Azure. Het azidentity-pakket ondersteunt meerdere opties voor verificatie bij Azure. Deze opties omvatten client/geheim, certificaat en beheerde identiteit.

De standaardverificatieoptie is DefaultAzureCredential,die gebruikmaakt van de omgevingsvariabelen die eerder in dit artikel zijn ingesteld. In uw Go-code maakt u als azidentity volgt een -object:

cred, err := azidentity.NewDefaultAzureCredential(nil)

Verbinding maken met Azure

Zodra u een referentie hebt , zoals een -object, maakt u een verbinding azidentity met het Azure Resource Management-doel-eindpunt. Het armcore-pakket biedt faciliteiten om verbinding te maken met Azure Resource Manager eindpunten. Deze eindpunten omvatten openbare en onafhankelijke clouds en Azure Stack.

con := armcore.NewDefaultConnection(cred, nil)

Een Resource Management-client maken

Zodra u verbinding hebt met de Azure Resource Manager, maakt u een client om verbinding te maken met de Azure-doelservice.

Stel dat u verbinding wilt maken met de Azure Compute service. Het compute-pakket bestaat uit een of meer clients. Een client groepeert een set gerelateerde API's, die toegang bieden tot de functionaliteit ervan binnen het opgegeven abonnement. U maakt een of meer clients voor toegang tot de API's die u nodig hebt met behulp van een armcore.Connection -object.

In het volgende codefragment, de armcompute. Het type NewVirtualMachinesClient wordt gebruikt om een client te maken voor het beheren van virtuele machines:

client := armcompute.NewVirtualMachinesClient(con, "<subscription ID>")

Hetzelfde patroon wordt gebruikt om verbinding te maken met andere Azure-services. Installeer bijvoorbeeld het armnetwork-pakket en maak een VirtualNetwork-client voor het beheren van VNET-resources (virtual network).

client := armnetwork.NewVirtualNetworksClient(con, "<subscription ID>")

De naslagdocumentatie voor Azure SDK voor Go gebruiken

Zodra clients zijn gemaakt, worden ze gebruikt om API-aanroepen uit te voeren voor uw Azure-resources. Voor resourcebeheerscenario's zijn de meeste gebruiksscenario's CRUD-bewerkingen (maken/lezen/bijwerken/verwijderen).

Ga als volgt te werk om de bewerkingen voor een specifiek type op te zoeken:

  1. Blader naar de Azure SDK voor Go referentiedocumentatie.
  2. Zoek op de pagina naar het type . (Als u op F > drukt, worden alle knooppunten op de pagina automatisch uitgebreid om te zoeken.)
  3. Selecteer het pakket.
  4. Zoek op de pagina van het pakket naar het type .
  5. Lees de beschrijving van het type en informatie over het gebruik ervan in uw Go-code.

U kunt de URL ook handmatig bouwen door de naam van het pakket toe te staan aan github.com/Azure/azure-sdk-for-go/sdk/ .

Als u bijvoorbeeld de referentiedocumentatie compute/armcompute zoekt, is de URL github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute .

In het volgende voorbeeld ziet u hoe u de referentiedocumentatie voor bewerkingen van Azure-resourcegroep kunt vinden:

  1. Blader naar de hoofdreferentie Azure SDK voor Go de pkg.go.dev.
  2. Vouw de map arm uit
  3. Selecteer armresources
  4. Klik op F > en voer resourcegroup in. Wanneer u de zoekterm typt, ziet u een goede overeenkomst met het pakket resource/armresources.
  5. Selecteer het juiste pakket voor uw toepassing.
  6. Lees de secties 'Aan de slag' of zoek naar een specifieke bewerking. Als u bijvoorbeeld zoekt naar de term 'maken' (als u een resourcegroep wilt maken), wordt u naar de functie CreateOrUpdate leidt.
  7. Op dit moment kunt u lezen hoe u de API-aanroep maakt om een Azure-resourcegroep te maken.

Langlopende bewerkingen

Omdat het uitvoeren van sommige bewerkingen lang kan duren, bevatten de beheerbibliotheken functies ter ondersteuning van langlopende bewerkingen (LRO) via asynchrone aanroepen. Deze functienamen beginnen met Begin . Voorbeelden van dit patroon zijn BeginCreate en BeginDelete .

Omdat deze functies asynchroon zijn, wordt uw code pas geblokkeerd wanneer de taak van de functie is voltooien. In plaats daarvan retourneert de functie onmiddellijk een poller-object. Uw code roept vervolgens een synchrone pollerfunctie aan die wordt retourneert wanneer de oorspronkelijke asynchrone functie is voltooid.

Het volgende codefragment toont een voorbeeld van dit patroon.

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", "additonal_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, 5*time.Second)
if err != nil {
	// handle error...
}

// Print the fact that the LRO completed.
fmt.Printf("LRO done")

// Work with the response ("resp") object.

Belangrijkste punten:

  • De PollUntilDone functie vereist een polling-interval dat aangeeft hoe vaak de status moet worden geprobeerd op te halen.
  • Het interval is doorgaans kort. Zie de documentatie voor de specifieke Azure-resource voor aanbevolen intervallen.
  • De LRO-sectie van de pagina Go Azure SDK Design Guidelines (Ontwerprichtlijnen voor Go Azure SDK) heeft een geavanceerd voorbeeld voor verplaatsen en algemene richtlijnen voor LRO.

Volgende stappen