Поделиться через


Общие сведения о библиотеках управления Azure SDK для Go

Как описано в статье Что такое Azure SDK для Go?, Azure SDK для Go содержит набор библиотек управления и клиентских библиотек. У этих библиотек управления есть много одинаковых возможностей, в том числе поддержка идентификации Azure, конвейер HTTP и обработка ошибок. Полный список библиотек управления можно найти на странице модуля Azure SDK для Go.

В этой статье вы узнаете, как использовать библиотеки управления для взаимодействия с ресурсами Azure.

Установка пакетов Go

В большинстве проектов устанавливается пакеты Go для управления версиями и зависимостей.

Для установки пакета Go воспользуйтесь командой go get.

Например, чтобы установить пакет armcompute, выполните в командной строке следующую команду:

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute

В большинстве приложений Go установите следующие пакеты для проверки подлинности:

  • github.com/Azure/azure-sdk-for-go/sdk/azcore/to
  • github.com/Azure/azure-sdk-for-go/sdk/azidentity

Импорт пакетов в код Go

Скачанный пакет импортируется в приложение с помощью инструкции import:

import (
    "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/compute/armcompute"
)

Проверка подлинности в Azure

Чтобы выполнить код в подписке Azure, необходимо пройти проверку подлинности в Azure. Пакет azidentity поддерживает несколько вариантов проверки подлинности в Azure. Например, по сочетанию клиента и секрета, по сертификату или по управляемому удостоверению.

По умолчанию используется вариант DefaultAzureCredential, основанный на переменных среды, которые вы настроили ранее при изучении этой статьи. В коде Go создается azidentity объект следующим образом:

cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
  // handle error
}

Создание клиента Azure Resource Manager

После получения учетных данных из Удостоверения Azure создайте клиент для подключения к целевой службе Azure.

Для примера предположим, что вы хотите подключиться к службе Вычисления Azure. Пакет службы вычислений состоит из одного или нескольких клиентов. В клиенте собраны несколько родственных интерфейсов API, которые предоставляют доступ к функциональным возможностям в указанной подписке. Вы создаете один или несколько клиентов для доступа к необходимым API.

В следующем фрагменте кода используется тип armcompute.NewVirtualMachinesClient для создания клиента, позволяющего управлять виртуальными машинами:

client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

Этот же шаблон используется для подключения к другим службам Azure. Например, установите пакет armnetwork и создайте клиент виртуальной сети для управления ресурсами виртуальной сети.

client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

Пример кода:

package main

import (
	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)

func main() {
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		// handle error
	}
	client, err := armcompute.NewVirtualMachinesClient("SubID", cred, nil)
	if err != nil {
        // handle error
    }
}

Использование справочной документации по Azure SDK для Go

Созданные экземпляры клиента используются для выполнения вызовов к API для управления ресурсами Azure. В сценариях управления ресурсами чаще всего применяются операции CRUD (создание, чтение, обновление и удаление).

Чтобы найти операции для конкретного типа, выполните следующие шаги.

  1. Перейдите на страницу справочной документации Azure SDK для Go.
  2. Найдите страницу пакета. (Нажатие клавиши <Ctrl+F> автоматически развертывает все узлы на странице поиска.)
  3. Выберите пакет.
  4. Найдите нужный тип на странице пакета.
  5. Изучите описание типа и сведения о его использовании в коде Go.

Можно также вручную создать URL-адрес, добавив имя пакета к базовому адресу github.com/Azure/azure-sdk-for-go/sdk/.

Например, если вы ищете справочную документацию по compute/armcompute, используйте URL-адрес github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute.

В следующем примере показано, как найти справочную документацию по операциям с группами ресурсов Azure.

  1. Перейдите к основной справочной документации по Пакету SDK Azure для Go pkg.go.dev.
  2. Нажмите клавиши <CTRL+F> и введите resourcemanager/resources/armresources. При вводе термина поиска вы увидите близкое совпадение с пакетом ресурсов или armresources .
  3. Выберите подходящий пакет для приложения.
  4. Прочтите разделы Getting Started (Начало работы) или найдите конкретную операцию. Например, поиск термина resourcegroupsclient.create (если вы хотите создать группу ресурсов) приводит к функции CreateOrUpdate.
  5. На этом этапе вы можете прочитать, как выполнить вызов API для создания группы ресурсов Azure.

Длительные операции

Поскольку выполнение некоторых операций может занять длительное время, библиотеки управления содержат функции для поддержки длительных операций через асинхронные вызовы. Имена этих функций начинаются с Begin. Например, BeginCreate и BeginDelete.

Эти функции являются асинхронными, то есть код не блокируется в ожидании завершения их работы. Вместо этого функция немедленно возвращает объект poller. Затем код вызывает синхронную функцию опроса, которая возвращается после завершения исходной асинхронной функции.

Этот шаблон демонстрируется в следующем примере кода.

ctx := context.Background()
// Call an asynchronous function to create a client. The return value is a poller object.
poller, err := client.BeginCreate(ctx, "resource_identifier", "additional_parameter")

if err != nil {
	// handle error...
}

// Call the poller object's PollUntilDone function that will block until the poller object
// has been updated to indicate the task has completed.
resp, err = poller.PollUntilDone(ctx, nil)
if err != nil {
	// handle error...
}

// Print the fact that the LRO completed.
fmt.Printf("LRO done")

// Work with the response ("resp") object.

Основные моменты:

Следующие шаги