Resourcegroepen beheren met de Azure SDK voor Go
In dit artikel leert u hoe u een resourcegroep maakt en beheert met de Azure SDK voor Go-beheerbibliotheek.
1. Azure-resources instellen
Als u de stappen in dit artikel wilt uitvoeren, hebt u de volgende Azure-resources en -id's nodig:
Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
Haal de Tenant-id van Microsoft Entra op.
Een service-principal maken. Noteer de toepassings-id en het geheim van de service-principal. Zorg ervoor dat u ook de instructies volgt om de rol Inzender voor uw abonnement toe te wijzen aan de toepassing. De rol Inzender is een bevoorrechte beheerdersrol die machtigingen verleent voor het beheren van alle resources in uw abonnement.
Voordat u verdergaat met de volgende sectie, moet u ervoor zorgen dat u uw abonnements-id (Guid), tenant-id (Guid) en de client-/toepassings-id (Guid) en het geheim voor uw service-principal hebt genoteerd.
2. Omgevingsvariabelen voor verificatie instellen
Stel met behulp van uw Azure-verificatiegegevens de juiste omgevingsvariabelen in, zodat uw code kan worden geverifieerd bij Azure.
Stel de volgende omgevingsvariabelen in. Vervang de tijdelijke aanduidingen door de juiste waarden uit de vorige sectie.
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. Een resourcegroep maken
Maak een map waarin u de go-voorbeeldcode wilt testen en uitvoeren en deze de huidige map wilt maken.
Voer go mod init uit om een module te maken in de huidige map.
go mod init <module_path>
Belangrijkste punten:
- De
<module_path>
parameter is over het algemeen een locatie in een GitHub-opslagplaats, zoalsgithub.com/<your_github_account_name>/<directory>
. - Wanneer u een opdrachtregel-app maakt als test en de app niet publiceert, hoeft deze
<module_path>
niet naar een werkelijke locatie te verwijzen.
- De
Voer de volgende opdracht uit om de benodigde Azure SDK voor Go-modules te downloaden, te bouwen en te installeren.
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
Belangrijk
De pakketten voor de huidige versie van de Azure-resourcebeheerbibliotheken bevinden zich in
sdk/**/arm**
. De pakketten voor de vorige versie van de beheerbibliotheken bevinden zich onder/services
. Als u de oudere versie gebruikt, raadpleegt u de Migratiehandleiding voor Azure SDK voor Go.Maak een bestand met de naam
main.go
en voeg de volgende code toe. Elke sectie met code wordt commentaar gegeven om het doel ervan uit te leggen.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) }
Belangrijkste punten:
- De
subscriptionId
waarde wordt opgehaald uit deAZURE_SUBSCRIPTION_ID
omgevingsvariabele. - De
location
tekenreeksen enresourceGroupName
tekenreeksen worden ingesteld om waarden te testen. Wijzig deze waarden indien nodig in iets dat geschikt is voor uw locatie en abonnement.
- De
Voer go-moddy uit om de afhankelijkheden in het
go.mod
bestand op te schonen op basis van uw broncode.go mod tidy
Voer
go run
deze uit om de app te bouwen en uit te voeren.go run .
4. Controleer de resultaten
Blader naar Azure Portal.
Meld u aan en selecteer uw Azure-abonnement.
Selecteer Resourcegroepen in het linkermenu.
De nieuwe resourcegroep wordt vermeld in de resourcegroepen van uw Azure-abonnement.
5. Een resourcegroep bijwerken
Ga terug naar het
main.go
bestand.Voeg de volgende code net boven de
main
functie in.// 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) }
Nadat u de code hebt toegevoegd, gaat u verder met de volgende sectie. U voert de code uit in een latere sectie.
6. De resourcegroepen van een Azure-abonnement vermelden
Ga terug naar het
main.go
bestand.Voeg de volgende code net boven de
main
functie in.// 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 }
Nadat u de code hebt toegevoegd, gaat u verder met de volgende sectie. U voert de code uit in een latere sectie.
7. Een resourcegroep verwijderen
Ga terug naar het
main.go
bestand.Voeg de volgende code net boven de
main
functie in.// 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 }
Nadat u de code hebt toegevoegd, gaat u verder met de volgende sectie. U voert de code uit in een latere sectie.
8. De hoofdfunctie bijwerken
In vorige secties hebt u code toegevoegd om een resourcegroep te maken, bij te main.go
werken en te verwijderen. U hebt ook code toegevoegd om alle resourcegroepen in een Azure-abonnement weer te geven. Ga als volgt te werk om al deze functies opeenvolgend uit te voeren:
Vervang
main.go
demain
functie door de volgende code: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") }
Voer de code uit en bekijk de uitvoer.
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
Notitie
Het verwijderen van de resourcegroep kan enkele minuten duren.
Probleemoplossing
- Controleer de vorige vragen die zijn gepost op Stack Overflow of stel nieuwe vragen met behulp van de
Azure
enGo
tags. - Voor eventuele fouten die u tegenkomt, dient u een GitHub-probleem in