Dela via


Hantera resursgrupper med Azure SDK för Go

I den här artikeln får du lära dig hur du skapar och hanterar en resursgrupp med Azure SDK för Go-hanteringsbiblioteket.

1. Konfigurera Azure-resurser

För att slutföra stegen i den här artikeln behöver du följande Azure-resurser och identifierare:

  • Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

  • Hämta Azure-prenumerations-ID:t.

  • Hämta Klient-ID:t för Microsoft Entra.

  • Skapa ett huvudnamn för tjänsten. Observera tjänstens huvudnamns program-ID (klient)-ID och hemlighet. Se till att du också följer anvisningarna för att tilldela rollen Deltagare i din prenumeration till programmet. Rollen Deltagare är en privilegierad administratörsroll som ger behörighet att hantera alla resurser i din prenumeration.

Innan du går vidare till nästa avsnitt kontrollerar du att du har antecknat ditt prenumerations-ID (Guid), klient-ID (Guid) och klient-/program-ID (Guid) och hemlighet för tjänstens huvudnamn.

2. Ange miljövariabler för autentisering

Använd din Azure-autentiseringsinformation och ange lämpliga miljövariabler så att koden kan autentiseras till Azure.

Ange följande miljövariabler. Ersätt platshållarna med lämpliga värden från föregående avsnitt.

export AZURE_SUBSCRIPTION_ID="<azure_subscription_id>"
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"

3. Skapa en resursgrupp

  1. Skapa en katalog där du kan testa och köra Go-exempelkoden och göra den till den aktuella katalogen.

  2. Kör kör mod init för att skapa en modul i den aktuella katalogen.

    go mod init <module_path>
    

    Viktiga punkter:

    • Parametern <module_path> är vanligtvis en plats i en GitHub-lagringsplats , till exempel github.com/<your_github_account_name>/<directory>.
    • När du skapar en kommandoradsapp som ett test och inte publicerar appen <module_path> behöver den inte referera till en faktisk plats.
  3. Kör gå och hämta , skapa och installera nödvändiga Azure SDK för Go-moduler.

    go get github.com/Azure/azure-sdk-for-go/sdk/azcore
    go get github.com/Azure/azure-sdk-for-go/sdk/azcore/to
    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources
    

    Viktigt!

    Paketen för den aktuella versionen av Azure-resurshanteringsbiblioteken finns i sdk/**/arm**. Paketen för den tidigare versionen av hanteringsbiblioteken finns under /services. Om du använder den äldre versionen kan du läsa migreringsguiden för Azure SDK for Go.

  4. Skapa en fil med namnet main.go och lägg till följande kod. Varje kodavsnitt kommenteras för att förklara dess syfte.

    package main
    
    // Import key modules.
    import (
    	"context"
    	"log"
    	"os"
    
    	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
    	"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/resources/armresources"
    )
    
    // Define key global variables.
    var (
    	subscriptionId    = os.Getenv("AZURE_SUBSCRIPTION_ID")
    	location          = "eastus"
    	resourceGroupName = "myResourceGroup" // !! IMPORTANT: Change this to a unique name in your subscription.
    	ctx               = context.Background()
    )
    
    // Define the function to create a resource group.
    func createResourceGroup(subscriptionId string, credential azcore.TokenCredential) (armresources.ResourceGroupsClientCreateOrUpdateResponse, error) {
    	rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
    	param := armresources.ResourceGroup{
    		Location: to.Ptr(location),
    	}
    
    	return rgClient.CreateOrUpdate(ctx, resourceGroupName, param, nil)
    }
    
    // Define the standard 'main' function for an app that is called from the command line.
    func main() {
    
    	// Create a credentials object.
    	cred, err := azidentity.NewDefaultAzureCredential(nil)
    	if err != nil {
    		log.Fatalf("Authentication failure: %+v", err)
    	}
    
    	// Call your function to create an Azure resource group.
    	resourceGroup, err := createResourceGroup(subscriptionId, cred)
    	if err != nil {
    		log.Fatalf("Creation of resource group failed: %+v", err)
    	}
    
    	// Print the name of the new resource group.
    	log.Printf("Resource group %s created", *resourceGroup.ResourceGroup.ID)
    }
    

    Viktiga punkter:

    • Värdet subscriptionId hämtas från AZURE_SUBSCRIPTION_ID miljövariabeln.
    • Strängarna location och resourceGroupName är inställda på testvärden. Om det behövs ändrar du dessa värden till något som är lämpligt för din plats och prenumeration.
  5. Kör kör mod städa för att rensa upp beroenden go.mod i filen baserat på din källkod.

    go mod tidy
    
  6. Kör go run för att skapa och köra appen.

    go run .
    

4. Kontrollera resultatet

  1. Bläddra till Azure-portalen.

  2. Logga in och välj din Azure-prenumeration.

  3. Välj Resursgrupper på den vänstra menyn.

  4. Den nya resursgruppen visas bland din Azure-prenumerations resursgrupper.

5. Uppdatera en resursgrupp

  1. Gå tillbaka till main.go filen.

  2. Infoga följande kod precis ovanför main funktionen.

    // Update the resource group by adding a tag to it.
    func updateResourceGroup(subscriptionId string, credential azcore.TokenCredential) (armresources.ResourceGroupsClientUpdateResponse, error) {
        rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
        update := armresources.ResourceGroupPatchable{
            Tags: map[string]*string{
                "new": to.Ptr("tag"),
            },
        }
        return rgClient.Update(ctx, resourceGroupName, update, nil)
    }
    

När du har lagt till koden går du vidare till nästa avsnitt. Du kör koden i ett senare avsnitt.

6. Visa en lista över resursgrupper för en Azure-prenumeration

  1. Gå tillbaka till main.go filen.

  2. Infoga följande kod precis ovanför main funktionen.

    // List all the resource groups of an Azure subscription.
    func listResourceGroups(subscriptionId string, credential azcore.TokenCredential) ([]*armresources.ResourceGroup, error) {
        rgClient, _ := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
        pager := rgClient.NewListPager(nil)
    
        var resourceGroups []*armresources.ResourceGroup
        for pager.More() {
            resp, err := pager.NextPage(ctx)
            if err != nil {
                return nil, err
            }
            if resp.ResourceGroupListResult.Value != nil {
                resourceGroups = append(resourceGroups, resp.ResourceGroupListResult.Value...)
            }
        }
        return resourceGroups, nil
    }
    

När du har lagt till koden går du vidare till nästa avsnitt. Du kör koden i ett senare avsnitt.

7. Ta bort en resursgrupp

  1. Gå tillbaka till main.go filen.

  2. Infoga följande kod precis ovanför main funktionen.

    // Delete a resource group.
    func deleteResourceGroup(subscriptionId string, credential azcore.TokenCredential) error {
        rgClient := armresources.NewResourceGroupsClient(subscriptionId, credential, nil)
    
        poller, err := rgClient.BeginDelete(ctx, resourceGroupName, nil)
        if err != nil {
            return err
        }
        if _, err := poller.PollUntilDone(ctx, nil); err != nil {
            return err
        }
        return nil
    }
    

När du har lagt till koden går du vidare till nästa avsnitt. Du kör koden i ett senare avsnitt.

8. Uppdatera huvudfunktionen

I föregående avsnitt har du lagt till kod för att main.go skapa, uppdatera och ta bort en resursgrupp. Du har också lagt till kod för att lista alla resursgrupper i en Azure-prenumeration. Så här kör du alla dessa funktioner sekventiellt:

  1. I main.goersätter du main funktionen med följande kod:

    func main() {
    
        // Create a credentials object.
        cred, err := azidentity.NewDefaultAzureCredential(nil)
        if err != nil {
            log.Fatalf("Authentication failure: %+v", err)
        }
    
        // Call your function to create an Azure resource group.
        resourceGroup, err := createResourceGroup(subscriptionId, cred)
        if err != nil {
            log.Fatalf("Creation of resource group failed: %+v", err)
        }
        // Print the name of the new resource group.
        log.Printf("Resource group %s created", *resourceGroup.ResourceGroup.ID)
    
        // Call your function to add a tag to your new resource group.
        updatedRG, err := updateResourceGroup(subscriptionId, cred)
        if err != nil {
            log.Fatalf("Update of resource group failed: %+v", err)
        }
        log.Printf("Resource Group %s updated", *updatedRG.ResourceGroup.ID)
    
        // Call your function to list all the resource groups.
        rgList, err := listResourceGroups(subscriptionId, cred)
        if err != nil {
            log.Fatalf("Listing of resource groups failed: %+v", err)
        }
        log.Printf("Your Azure subscription has a total of %d resource groups", len(rgList))
    
        // Call your function to delete the resource group you created.
        if err := deleteResourceGroup(subscriptionId, cred); err != nil {
            log.Fatalf("Deletion of resource group failed: %+v", err)
        }
        log.Printf("Resource group deleted")
    }
    
  2. Kör koden och observera utdata.

    go run .
    
    2024/07/31 15:29:06 Resource group /subscriptions/<subscription ID>/resourceGroups/myResourceGroup created
    2024/07/31 15:29:07 Resource Group /subscriptions/<subscription ID>/resourceGroups/myResourceGroup updated
    2024/07/31 15:29:07 Your Azure subscription has a total of 8 resource groups
    2024/07/31 15:30:25 Resource group deleted
    

    Kommentar

    Det kan ta några minuter att ta bort resursgruppen.

Felsökning

Nästa steg