Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego artykułu dowiesz się, jak utworzyć grupę zasobów i zarządzać nią za pomocą biblioteki zarządzania zestawu Azure SDK for Go.
1. Konfigurowanie zasobów platformy Azure
Aby wykonać kroki opisane w tym artykule, potrzebne są następujące zasoby i identyfikatory platformy Azure:
Subskrypcja platformy Azure: Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto .
Utwórz jednostkę usługi. Zanotuj identyfikator aplikacji (klienta) i wpis tajny jednostki usługi. Upewnij się również, że postępujesz zgodnie z instrukcjami, aby przypisać rolę współtwórcy do subskrypcji na potrzeby aplikacji. Rola Współautor to rola uprzywilejowanego administratora, która przyznaje uprawnienia do zarządzania wszystkimi zasobami w ramach subskrypcji.
Przed przejściem do następnej sekcji upewnij się, że zanotowałeś identyfikator subskrypcji (Guid), identyfikator dzierżawy (Guid), identyfikator klienta/aplikacji (Guid) i tajny klucz do aplikacji dla Twojego głównego obiektu zabezpieczeń.
2. Konfigurowanie uwierzytelniania
Wybierz metodę uwierzytelniania, która odpowiada Twoim potrzebom. Oferujemy wiele metod uwierzytelniania bez poświadczeń dla aplikacji hostowanych w środowiskach serwerowych i lokalnych. Uwierzytelnianie aplikacji języka Go w usługach platformy Azure przy użyciu zestawu Azure SDK dla języka Go pomoże Ci zdecydować, który mechanizm uwierzytelniania jest najlepszy dla danego scenariusza.
3. Tworzenie grupy zasobów
Utwórz katalog, w którym chcesz przetestować i uruchomić przykładowy kod języka Go, i utwórz go jako bieżący katalog.
Uruchom go mod init, aby utworzyć moduł w bieżącym katalogu.
go mod init <module_path>Kluczowe punkty:
- Parametr
<module_path>jest zazwyczaj lokalizacją w repozytorium GitHub — takim jakgithub.com/<your_github_account_name>/<directory>. - Jeśli tworzysz aplikację wiersza polecenia na potrzeby testu i nie zamierzasz jej publikować,
<module_path>nie musi odwoływać się do rzeczywistej lokalizacji.
- Parametr
Uruchom go get, aby pobrać, skompilować i zainstalować niezbędny zestaw Azure SDK dla modułów 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/armresourcesWażne
Pakiety dla bieżącej wersji bibliotek zarządzania zasobami Azure znajdują się w
sdk/**/arm**. Pakiety dla poprzedniej wersji bibliotek zarządzania znajdują się w obszarze/services. Jeśli używasz starszej wersji, zobacz Przewodnik po migracji zestawu Azure SDK dla języka Go.Utwórz plik o nazwie
main.goi dodaj następujący kod. Każda sekcja kodu jest komentowana, aby wyjaśnić jego przeznaczenie.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) }Ciągi
locationiresourceGroupNamesą ustawione na wartości testowe. W razie potrzeby zmień te wartości na odpowiednie dla Twojej lokalizacji i subskrypcji.Uruchom go mod tidy, aby wyczyścić zależności w pliku
go.modna podstawie kodu źródłowego.go mod tidyUruchom polecenie
go run, aby skompilować i uruchomić aplikację.go run .
4. Sprawdź wyniki
Przejdź do witryny Azure Portal.
Zaloguj się i wybierz subskrypcję platformy Azure.
W menu po lewej stronie wybierz pozycję Grupy zasobów.
Nowa grupa zasobów jest wymieniona wśród grup zasobów subskrypcji platformy Azure.
5. Aktualizowanie grupy zasobów
Wróć do
main.gopliku.Wstaw następujący kod tuż nad funkcją
main.// 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 dodaniu kodu przejdź do następnej sekcji. Kod jest uruchamiany w późniejszej sekcji.
6. Wyświetlanie listy grup zasobów subskrypcji platformy Azure
Wróć do
main.gopliku.Wstaw następujący kod tuż nad funkcją
main.// 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 dodaniu kodu przejdź do następnej sekcji. Kod jest uruchamiany w późniejszej sekcji.
7. Usuwanie grupy zasobów
Wróć do
main.gopliku.Wstaw następujący kod tuż nad funkcją
main.// 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 dodaniu kodu przejdź do następnej sekcji. Kod jest uruchamiany w późniejszej sekcji.
8. Aktualizowanie funkcji main
W poprzednich sekcjach dodano kod umożliwiający main.go tworzenie, aktualizowanie i usuwanie grupy zasobów. Dodano również kod, aby wyświetlić listę wszystkich grup zasobów w subskrypcji platformy Azure. Aby uruchomić wszystkie te funkcje sekwencyjnie:
W
main.gozastąpmainfunkcję następującym kodem: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") }Uruchom kod i obserwuj dane wyjściowe.
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 deletedUwaga / Notatka
Usunięcie grupy zasobów może potrwać kilka minut.
Rozwiązywanie problemów
- Sprawdź poprzednie pytania opublikowane w witrynie Stack Overflow lub zadaj nowe pytania, korzystając z tagów
AzureorazGo. - W przypadku napotkanych błędów zgłoś problem z usługą GitHub