Создайте субъект-службу. Обратите внимание на идентификатор и секрет приложения (клиента) субъекта-службы. Убедитесь, что вы также следуйте инструкциям, чтобы назначить роль участника в подписке приложению. Роль участника — это роль привилегированного администратора, которая предоставляет разрешение на управление всеми ресурсами в подписке.
Прежде чем перейти к следующему разделу, убедитесь, что вы указали идентификатор подписки (GUID), идентификатор клиента (GUID) и идентификатор клиента или приложения (GUID) и секрет для субъекта-службы.
2. Установка переменных среды проверки подлинности
Используя сведения о проверке подлинности Azure, задайте соответствующие переменные среды, чтобы код мог проходить проверку подлинности в Azure.
Задайте следующие переменные среды. Замените заполнители соответствующими значениями из предыдущего раздела.
Командная строка Windows
set AZURE_SUBSCRIPTION_ID="<azure_subscription_id>"
set AZURE_TENANT_ID="<active_directory_tenant_id>"
set AZURE_CLIENT_ID="<service_principal_appid>"
set AZURE_CLIENT_SECRET="<service_principal_password>"
3. Создание группы ресурсов
Создайте каталог для тестирования и выполнения примера кода Go и сделайте его текущим каталогом.
Запустите go mod init, чтобы создать модуль в текущем каталоге.
Консоль
go mod init <module_path>
Основные моменты:
Параметр <module_path> обычно обозначает расположение в репозитории GitHub, например github.com/<your_github_account_name>/<directory>.
При создании приложения командной строки в качестве теста и публикации приложения <module_path> не требуется ссылаться на фактическое расположение.
Чтобы скачать, выполнить сборку и установить необходимые модули Azure SDK для Go, выполните go get.
Консоль
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 и добавьте код ниже. Каждый раздел кода снабжен комментариями, которые поясняют его назначение.
Go
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.funccreateResourceGroup(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.funcmain() {
// 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)
}
Основные моменты:
Значение subscriptionId извлекается из переменной среды AZURE_SUBSCRIPTION_ID.
Значения location и resourceGroupName строки задаются для тестирования. При необходимости измените эти значения на что-то подходящее для вашего расположения и подписки.
Выполните команду go mod tidy, которая очищает зависимости в файле go.mod на основе анализа исходного кода.
Консоль
go mod tidy
Чтобы выполнить сборку и запустить приложение, выполните go run.
После добавления кода перейдите к следующему разделу. Код выполняется в следующем разделе.
8. Обновление функции main
В предыдущих разделах вы добавили код для main.go создания, обновления и удаления группы ресурсов. Вы также добавили код для перечисления всех групп ресурсов в подписке Azure. Для последовательного выполнения всех этих функций выполните следующие действия:
В main.go, замените функцию main следующим кодом:
Go
funcmain() {
// 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.
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Создавайте комплексные решения в Microsoft Azure для создания Функции Azure, реализации веб-приложений и управления ими, разработке решений, использующих службу хранилища Azure, и т. д.