Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье вы узнаете, как создать группу ресурсов и управлять ею с помощью библиотеки управления Azure SDK для Go.
1. Настройка ресурсов Azure
Чтобы выполнить действия, описанные в этой статье, вам потребуются следующие ресурсы и идентификаторы Azure:
Подписка Azure: Если у вас нет подписки Azure, создайте бесплатную учетную запись перед началом работы.
Создайте субъект-службу. Обратите внимание на идентификатор приложения (клиента) служебного принципала и секрет. Убедитесь, что вы также соблюдаете инструкции, чтобы назначить роль Контрибьютора для приложения в вашей подписке. Роль участника — это роль привилегированного администратора, которая предоставляет разрешение на управление всеми ресурсами в подписке.
Прежде чем перейти к следующему разделу, убедитесь, что вы указали идентификатор подписки (GUID), идентификатор клиента (GUID) и идентификатор клиента или приложения (GUID) и секрет для субъекта-службы.
2. Настройка проверки подлинности
Выберите метод проверки подлинности, который соответствует вашим потребностям. Мы предлагаем несколько методов проверки подлинности без учетных данных для приложений, размещенных в серверных и локальных средах. Проверка подлинности приложений Go в службах Azure с помощью статьи Azure SDK для Go поможет решить, какой механизм проверки подлинности лучше подходит для вашего сценария.
3. Создание группы ресурсов
Создайте каталог, в котором необходимо протестировать и запустить пример кода Go и сделать его текущим каталогом.
Запустите go mod init, чтобы создать модуль в текущем каталоге.
go mod init <module_path>Основные моменты:
- Этот
<module_path>параметр обычно является расположением в репозитории GitHub, напримерgithub.com/<your_github_account_name>/<directory>. - При создании приложения командной строки в качестве теста, которое не будет опубликовано,
<module_path>не обязательно должно ссылаться на фактическое расположение.
- Этот
Запустите go get для загрузки, сборки и установки необходимых модулей Azure SDK для 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Это важно
Пакеты для текущей версии библиотек управления ресурсами Azure находятся в
sdk/**/arm**. Пакеты для предыдущей версии библиотек управления находятся в разделе/services. Если вы используете старую версию, ознакомьтесь с руководством по миграции пакета SDK Azure для Go.Создайте файл с именем
main.goи добавьте следующий код. Каждый раздел кода закомментирован для объяснения своей цели.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) }Значения
locationиresourceGroupNameстроки задаются для тестирования. При необходимости измените эти значения на что-то подходящее для вашего расположения и подписки.Запустите go mod tidy, чтобы очистить зависимости в файле
go.modна основе вашего исходного кода.go mod tidyВыполните команду
go run, чтобы выполнить сборку и запуск приложения.go run .
4. Проверка результатов
Перейдите на портал Azure.
Войдите и выберите подписку Azure.
В меню слева выберите группы ресурсов.
Новая группа ресурсов указана в группах ресурсов подписки Azure.
5. Обновление группы ресурсов
Вернитесь в файл
main.go.Вставьте следующий код над функцией
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) }
После добавления кода перейдите к следующему разделу. Вы выполните код в следующем разделе.
6. Список групп ресурсов подписки Azure
Вернитесь в файл
main.go.Вставьте следующий код над функцией
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 }
После добавления кода перейдите к следующему разделу. Вы выполните код в следующем разделе.
7. Удаление группы ресурсов
Вернитесь в файл
main.go.Вставьте следующий код над функцией
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 }
После добавления кода перейдите к следующему разделу. Вы выполните код в следующем разделе.
8. Обновление основной функции
В предыдущих разделах вы добавили код для main.go создания, обновления и удаления группы ресурсов. Вы также добавили код для перечисления всех групп ресурсов в подписке Azure. Для последовательного выполнения всех этих функций выполните следующие действия:
В
main.go, замените функциюmainследующим кодом: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") }Запустите код и просмотрите выходные данные.
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Замечание
Удаление группы ресурсов может занять несколько минут.
Устранение неполадок
- Проверьте предыдущие вопросы, опубликованные в Stack Overflow , или задайте новые вопросы с помощью
Azureтегов иGoтегов. - Если вы столкнулись с ошибками, создайте проблему на GitHub