Azure SDK for Go 管理库概述

如文章中所述 ,什么是 Azure SDK for Go?,Azure SDK for Go 包含一组管理和客户端库。 管理库共享许多功能,例如 Azure 标识支持、HTTP 管道和错误处理。 可以在 Azure SDK for 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 标识获取凭据后,创建客户端以连接到目标 Azure 服务。

例如,假设要连接到 Azure 计算 服务。 计算包由一个或多个客户端组成。 客户端对一组相关 API 进行分组,提供对指定订阅中其功能的访问权限。 创建一个或多个客户端来访问所需的 API。

在以下代码片段中, armcompute。NewVirtualMachinesClient 类型 用于创建客户端来管理虚拟机:

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

同一模式用于与其他 Azure 服务连接。 例如,安装 armnetwork 包并创建 虚拟网络 客户端来管理虚拟网络 (VNET) 资源。

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 for Go 参考文档

实例化后,客户端用于对 Azure 资源进行 API 调用。 对于资源管理场景,大多数使用案例都是 CRUD(创建/读取/更新/删除)操作。

要查找特定类型的操作,请执行以下步骤:

  1. 浏览到 Azure SDK for Go 参考文档
  2. 在页面上搜索该包。 (按 <Ctrl+F> 会自动展开页面上的所有节点进行搜索。
  3. 选择套餐。
  4. 在包的页面上搜索类型。
  5. 阅读类型的说明及其在 Go 代码中的用法信息。

还可以通过将包的名称追加到 github.com/Azure/azure-sdk-for-go/sdk/其中来手动生成 URL。

例如,如果要查找 compute/armcompute 参考文档,则 URL 为 github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute

以下示例演示如何查找 Azure 资源组操作的参考文档:

  1. 请访问 pkg.go.dev 上的主要 Azure SDK for Go 参考文档
  2. 选择 <Ctrl+F> 并输入 resourcemanager/resources/armresources。 键入搜索词时,会看到与 resources/armresources 包的紧密匹配。
  3. 为应用程序选择相应的包。
  4. 通读“入门”部分中的内容或搜索特定操作。 例如,搜索“resourcegroupsclient.create”一词(如果要创建资源组),这会导致 创建OrUpdate 函数
  5. 此时,可以阅读如何进行 API 调用以创建 Azure 资源组。

长期运行的操作

由于某些操作可能需要很长时间才能完成,因此管理库包含通过异步调用来支持长时间运行操作(LRO)的函数。 这些函数名称以 Begin. 开头。 此模式的示例是 BeginCreateBeginDelete

由于这些函数是异步的,因此在函数完成其任务之前,代码不会阻止。 相反,该函数会立即返回 轮询器 对象。 然后,代码调用同步轮询函数,该函数在原始异步函数完成时返回。

以下代码片段显示了此模式的示例。

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.

要点

  • PollUntilDone 函数需要一个轮询间隔时间,用于指定尝试获取状态的频率。
  • 间隔通常较短。 请参阅特定 Azure 资源的文档以了解建议的间隔。
  • Go Azure SDK 设计指南页的 LRO 部分包含 LRO 的更高级的示例和常规指南。

后续步骤