Správa skupin prostředků pomocí sady Azure SDK for Go
V tomto článku se dozvíte, jak vytvořit a spravovat skupinu prostředků pomocí knihovny pro správu Azure SDK for Go.
1. Nastavení prostředků Azure
K dokončení kroků v tomto článku potřebujete následující prostředky a identifikátory Azure:
Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Získejte ID předplatného Azure.
Získejte ID tenanta Microsoft Entra.
Vytvořte instanční objekt. Poznamenejte si ID aplikace (klienta) instančního objektu a tajný klíč. Nezapomeňte také postupovat podle pokynů k přiřazení role Přispěvatel ve vašem předplatném k aplikaci. Role Přispěvatel je privilegovaná role správce, která uděluje oprávnění ke správě všech prostředků ve vašem předplatném.
Než přejdete k další části, ujistěte se, že jste si poznamenali SVÉ ID předplatného (GUID), ID tenanta (GUID) a ID klienta/aplikace (GUID) a tajný klíč vašeho instančního objektu.
2. Nastavení proměnných prostředí ověřování
Pomocí ověřovacích informací Azure nastavte příslušné proměnné prostředí, aby se váš kód mohl ověřit v Azure.
Nastavte následující proměnné prostředí. Zástupné symboly nahraďte příslušnými hodnotami z předchozí části.
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. Vytvoření skupiny prostředků
Vytvořte adresář, ve kterém chcete otestovat a spustit ukázkový kód Go a nastavit ho jako aktuální adresář.
Spuštěním příkazu go mod init vytvořte modul v aktuálním adresáři.
go mod init <module_path>
Klíčové body:
- Parametr
<module_path>
je obecně umístění v úložišti GitHubu , napříkladgithub.com/<your_github_account_name>/<directory>
. - Když vytváříte aplikaci příkazového řádku jako test a aplikaci nepublikujete,
<module_path>
nemusí odkazovat na skutečné umístění.
- Parametr
Spuštěním přejděte ke stažení, sestavení a instalaci potřebných modulů Sady Azure SDK for Go.
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
Důležité
Balíčky pro aktuální verzi knihoven správy prostředků Azure jsou umístěny v
sdk/**/arm**
umístění . Balíčky pro předchozí verzi knihoven pro správu jsou umístěny v části/services
. Pokud používáte starší verzi, přečtěte si průvodce migrací do sady Azure SDK for Go.Vytvořte soubor s názvem
main.go
a přidejte následující kód. Každý oddíl kódu je okomentován a vysvětluje jeho účel.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) }
Klíčové body:
- Hodnota
subscriptionId
se načte zAZURE_SUBSCRIPTION_ID
proměnné prostředí. - Řetězce
location
jsouresourceGroupName
nastavené na testovací hodnoty. V případě potřeby změňte tyto hodnoty na něco vhodného pro vaše umístění a předplatné.
- Hodnota
Spuštěním příkazu Go mod tidy vyčistíte závislosti v souboru na základě zdrojového
go.mod
kódu.go mod tidy
Spusťte
go run
sestavení a spuštění aplikace.go run .
4. Ověření výsledků
Přejděte na web Azure Portal.
Přihlaste se a vyberte své předplatné Azure.
V levé nabídce vyberte Skupiny prostředků.
Nová skupina prostředků je uvedená mezi skupinami prostředků vašeho předplatného Azure.
5. Aktualizace skupiny prostředků
Vraťte
main.go
se do souboru.Vložte následující kód těsně nad
main
funkci.// 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) }
Po přidání kódu přejděte k další části. Kód spustíte v další části.
6. Výpis skupin prostředků předplatného Azure
Vraťte
main.go
se do souboru.Vložte následující kód těsně nad
main
funkci.// 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 }
Po přidání kódu přejděte k další části. Kód spustíte v další části.
7. Odstranění skupiny prostředků
Vraťte
main.go
se do souboru.Vložte následující kód těsně nad
main
funkci.// 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 }
Po přidání kódu přejděte k další části. Kód spustíte v další části.
8. Aktualizace hlavní funkce
V předchozích částech jste přidali kód pro main.go
vytvoření, aktualizaci a odstranění skupiny prostředků. Přidali jste také kód pro výpis všech skupin prostředků v předplatném Azure. Chcete-li spouštět všechny tyto funkce postupně:
Nahraďte
main.go
main
funkci následujícím kódem: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") }
Spusťte kód a sledujte výstup.
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
Poznámka:
Odstranění skupiny prostředků může trvat několik minut.
Řešení problému
- Podívejte se na předchozí otázky publikované ve službě Stack Overflow nebo položte nové otázky pomocí značek
Azure
.Go
- V případě jakýchkoli chyb, se které narazíte, zapište problém na GitHubu .