Erőforráscsoportok kezelése a Go-hoz készült Azure SDK-val
Ebből a cikkből megtudhatja, hogyan hozhat létre és kezelhet erőforráscsoportokat az Azure SDK for Go felügyeleti kódtárával.
1. Azure-erőforrások beállítása
A cikk lépéseinek elvégzéséhez a következő Azure-erőforrásokra és -azonosítókra van szüksége:
Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
Hozzon létre egy szolgáltatásnevet. Jegyezze fel a szolgáltatásnév alkalmazásának (ügyfél) azonosítóját és titkos kódját. Ügyeljen arra is, hogy az utasításokat követve rendelje hozzá az előfizetés közreműködői szerepkörét az alkalmazáshoz. A Közreműködői szerepkör egy kiemelt rendszergazdai szerepkör, amely engedélyt ad az előfizetés összes erőforrásának kezelésére.
Mielőtt továbblépne a következő szakaszra, jegyezte fel az előfizetés azonosítóját (Guid), a bérlőazonosítót (Guid), valamint a szolgáltatásnév ügyfél-/alkalmazásazonosítóját (Guid) és titkos kódját.
2. Hitelesítési környezeti változók beállítása
Az Azure-hitelesítési adatok használatával állítsa be a megfelelő környezeti változókat, hogy a kód hitelesíthető legyen az Azure-ban.
Állítsa be a következő környezeti változókat. Cserélje le a helyőrzőket az előző szakasz megfelelő értékeire.
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. Erőforráscsoport létrehozása
Hozzon létre egy könyvtárat, amelyben tesztelheti és futtathatja a Go-mintakódot, és az aktuális könyvtárvá teheti.
Futtassa a go mod init parancsot egy modul létrehozásához az aktuális könyvtárban.
go mod init <module_path>
Főbb pontok:
- A
<module_path>
paraméter általában egy GitHub-adattár helye – példáulgithub.com/<your_github_account_name>/<directory>
. - Amikor tesztként hoz létre parancssori alkalmazást, és nem teszi közzé az alkalmazást,
<module_path>
nem kell tényleges helyre hivatkoznia.
- A
Futtassa a go-hoz szükséges Azure SDK-modulok letöltését, összeállítását és telepítését.
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
Fontos
Az Azure-erőforrás-kezelési kódtárak aktuális verziójának csomagjai a következő helyen
sdk/**/arm**
találhatók: . A felügyeleti kódtárak előző verziójának csomagjai a következő alatt/services
találhatók: . Ha a régebbi verziót használja, tekintse meg az Azure SDK for Go migration guide-ot.Hozzon létre egy elnevezett
main.go
fájlt, és adja hozzá a következő kódot. A kód minden szakasza megjegyzést fűz a kód céljának magyarázatához.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) }
Főbb pontok:
- A
subscriptionId
rendszer lekéri az értéket aAZURE_SUBSCRIPTION_ID
környezeti változóból. - A
location
sztringek értékeketresourceGroupName
tesztelnek. Szükség esetén módosítsa ezeket az értékeket a tartózkodási helyének és előfizetésének megfelelő értékre.
- A
Futtassa a go mod tidy parancsot a fájl függőségeinek
go.mod
a forráskód alapján történő törléséhez.go mod tidy
Futtassa
go run
az alkalmazás létrehozásához és futtatásához.go run .
4. Az eredmények ellenőrzése
Keresse fel az Azure Portalt.
Jelentkezzen be, és válassza ki az Azure-előfizetését.
A bal oldali menüben válassza az Erőforráscsoportok elemet.
Az új erőforráscsoport szerepel az Azure-előfizetés erőforráscsoportjai között.
5. Erőforráscsoport frissítése
Térjen vissza a fájlhoz
main.go
.Szúrja be a következő kódot a
main
függvény fölé.// 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) }
A kód hozzáadása után lépjen tovább a következő szakaszra. A kódot egy későbbi szakaszban futtathatja.
6. Azure-előfizetés erőforráscsoportjainak listázása
Térjen vissza a fájlhoz
main.go
.Szúrja be a következő kódot a
main
függvény fölé.// 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 }
A kód hozzáadása után lépjen tovább a következő szakaszra. A kódot egy későbbi szakaszban futtathatja.
7. Erőforráscsoport törlése
Térjen vissza a fájlhoz
main.go
.Szúrja be a következő kódot a
main
függvény fölé.// 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 }
A kód hozzáadása után lépjen tovább a következő szakaszra. A kódot egy későbbi szakaszban futtathatja.
8. A fő függvény frissítése
Az előző szakaszokban kódot main.go
adott hozzá egy erőforráscsoport létrehozásához, frissítéséhez és törléséhez. Emellett kódot is hozzáadott az Azure-előfizetés összes erőforráscsoportjának listázásához. Az összes függvény egymás utáni futtatásához:
Írja
main.go
be a függvényt amain
következő kódra: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") }
Futtassa a kódot, és figyelje meg a kimenetet.
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
Feljegyzés
Az erőforráscsoport törlése eltarthat néhány percig.
Hibaelhárítás
- Ellenőrizze a Stack Overflow szolgáltatásban közzétett korábbi kérdéseket, vagy tegyen fel új kérdéseket a címkék és
Go
aAzure
címkék használatával. - A felmerülő hibák esetén küldjön egy GitHub-problémát