Správa skupin prostředků pomocí Azure SDK pro Go
V tomto článku se dozvíte, jak vytvořit skupinu prostředků pomocí knihovny pro správu Azure SDK pro Go.
1. konfigurace prostředí
Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Vytvoření instančního objektu. Poznamenejte si ID aplikace (klienta) instančního objektu a tajného klíče.
Důležité
Balíčky pro aktuální verzi knihoven správy prostředků Azure jsou umístěné v sdk/**/arm** . Balíčky pro předchozí verzi knihoven pro správu jsou umístěné v části /services . Pokud používáte starší verzi, přečtěte si toto Azure SDK pro go Průvodce migrací.
2. ověřování v Azure
Pomocí informací o ověřování Azure nastavte příslušné proměnné prostředí tak, aby se váš kód mohl ověřit do Azure.
Upravte
~/.bashrcsoubor přidáním následujících proměnných prostředí. Zástupné symboly nahraďte odpovídající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>"Chcete-li spustit
~/.bashrcskript, spusťtesource ~/.bashrc(nebo jeho zkrácený ekvivalent. ~/.bashrc).. ~/.bashrcPo nastavení proměnných prostředí můžete ověřit jejich hodnoty následujícím způsobem:
printenv | grep ^AZURE*
3. Vytvoření skupiny prostředků
Vytvořte adresář, ve kterém chcete otestovat a spustit vzorový kód přejít a nastavte ho jako aktuální adresář.
Spusťte příkaz Přejít do rozstředního prostředí a vytvořte modul v aktuálním adresáři.
go mod init <module_path>Klíčové body:
<module_path>parametr je obvykle umístění v GitHub úložiště – napříkladgithub.com/<your_github_account_name>/<directory>.- Když vytváříte aplikaci příkazového řádku jako test a aplikace nebude publikovat, nemusí
<module_path>existovat.
Spusťte příkaz Přejít a Stáhněte si, sestavte a nainstalujte potřebné Azure SDK pro go moduly.
go get github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute go get github.com/Azure/azure-sdk-for-go/sdk/armcore go get github.com/Azure/azure-sdk-for-go/sdk/azcore go get github.com/Azure/azure-sdk-for-go/sdk/azidentity go get github.com/Azure/azure-sdk-for-go/sdk/resources/armresources go get github.com/Azure/azure-sdk-for-go/sdk/toVytvořte soubor s názvem
main.goa vložte následující kód. Každá část kódu je komentovat a vysvětluje její účel.package main // Import key modules. import ( "context" "log" "os" "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/resources/armresources" "github.com/Azure/azure-sdk-for-go/sdk/to" ) // Define key global variables. var ( subscriptionId = os.Getenv("ARM_SUBSCRIPTION_ID") location = "eastus" resourceGroupName = "myResourceGroup" // !! IMPORTANT: Change this to a unique name in your subscription. interval = 5 * time.Second ) // Define the function to create a resource group. func createResourceGroup(connection *armcore.Connection) (armresources.ResourceGroupResponse, error) { rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId) param := armresources.ResourceGroup{ Location: to.StringPtr(location), } return rgClient.CreateOrUpdate(context.Background(), 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) } // Establish a connection with the Azure subscription. conn := armcore.NewDefaultConnection(cred, &armcore.ConnectionOptions{ Logging: azcore.LogOptions{ IncludeBody: true, }, }) // Call your function to create an Azure resource group. resourceGroup, err := createResourceGroup(ctx, conn) 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:
subscriptionIdHodnota je načtena zARM_SUBSCRIPTION_IDproměnné prostředí.locationresourceGroupNameŘetězcům a byly zadány hodnoty testu. V případě potřeby změňte tyto hodnoty na něco vhodného pro vaše prostředí.
Spusťte příkaz Přejít do uklizený mod a vyčistěte závislosti v souboru na základě vašeho zdrojového kódu.
go mod tidySpusťte
go runa sestavte a spusťte aplikaci.go run .
4. Ověřte výsledky
Přejděte na Azure Portal.
Přihlaste se a vyberte své předplatné Azure.
V levé nabídce vyberte Skupiny prostředků.
Nová skupina prostředků bude uvedená mezi skupinami prostředků vašeho předplatného Azure.
5. aktualizace skupiny prostředků
Vraťte se k
main.gosouboru.Vložte následující kód hned nad
mainfunkci.// Update the resource group by adding a tag to it. func updateResourceGroup(ctx context.Context, connection *armcore.Connection) (armresources.ResourceGroupResponse, error) { rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId) update := armresources.ResourceGroupPatchable{ Tags: map[string]*string{ "new": to.StringPtr("tag"), }, } return rgClient.Update(ctx, resourceGroupName, update, nil) }
6. seznam skupin prostředků předplatného Azure
Vraťte se k
main.gosouboru.Vložte následující kód hned nad
mainfunkci.// List all the resource groups of an Azure subscription. func listResourceGroups(ctx context.Context, connection *armcore.Connection) ([]*armresources.ResourceGroup, error) { rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId) pager := rgClient.List(nil) var resourceGroups []*armresources.ResourceGroup for pager.NextPage(ctx) { resp := pager.PageResponse() if resp.ResourceGroupListResult != nil { resourceGroups = append(resourceGroups, resp.ResourceGroupListResult.Value...) } } return resourceGroups, pager.Err() }
7. odstranění skupiny prostředků
Vraťte se k
main.gosouboru.Vložte následující kód hned nad
mainfunkci.// Delete a resource group. func deleteResourceGroup(ctx context.Context, connection *armcore.Connection) error { rgClient := armresources.NewResourceGroupsClient(connection, subscriptionId) poller, err := rgClient.BeginDelete(ctx, resourceGroupName, nil) if err != nil { return err } if _, err := poller.PollUntilDone(ctx, interval); err != nil { return err } return nil }
8. aktualizace funkce main
V tomto článku jste viděli, jak vytvořit, aktualizovat a odstranit skupinu prostředků. Viděli jsme také, jak vypsat všechny skupiny prostředků předplatného Azure. Chcete-li spustit všechny tyto funkce postupně, nahraďte 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)
}
// Establish a connection with the Azure subscription.
conn := armcore.NewDefaultConnection(cred, &armcore.ConnectionOptions{
Logging: azcore.LogOptions{
IncludeBody: true,
},
})
// Call your function to create an Azure resource group.
resourceGroup, err := createResourceGroup(ctx, conn)
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(ctx, conn)
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(ctx, conn)
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(ctx, conn); err != nil {
log.Fatalf("Deletion of resource group failed: %+v", err)
}
log.Printf("Resource group deleted")
}
Řešení potíží
- Podívejte se na předchozí dotazy publikované do Stack Overflow nebo položte nové dotazy pomocí
Goznaček a. - pro všechny chyby, které jste procházeli v rámci, zapište problém GitHub .