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:

Innan du går vidare till nästa avsnitt, kontrollerar du att du har antecknat ditt prenumerations-ID (Guid), hyresgäst-ID (Guid), klient-/program-ID (Guid) och hemligt värde för ditt tjänstehuvud.

2. Konfigurera autentisering

Välj en autentiseringsmetod som passar dina behov. Vi erbjuder flera autentiseringsmetoder utan autentiseringsuppgifter för appar som finns i servermiljöer och lokala miljöer. Autentisera Go-appar till Azure-tjänster med hjälp av artikeln Azure SDK for Go hjälper dig att avgöra vilken autentiseringsmekanism som passar bäst för ditt scenario.

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 go get för att ladda ner, bygga och installera de nödvändiga Azure SDK för Go-modulerna.

    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"
    
        "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    = "<your_subscription_id>"
        location          = "<your_region>"
        resourceGroupName = "<your_resource_group_name>" // !! 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)
    }
    

    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 go mod tidy för att rensa upp beroenden i go.mod-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. I den vänstra menyn väljer du Resursgrupper.

  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
    

    Anmärkning

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

Felsökning

Nästa steg