You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure SDK for Go查询Azure指定区域的可用VM规格列表

通过Azure SDK for Go获取指定区域可用VM规格列表方法

前置依赖

首先安装所需的SDK包:

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

核心实现逻辑

  • 第一步:通过azidentity.NewDefaultAzureCredential获取Azure认证凭证
  • 第二步:初始化armcompute.VirtualMachineSizesClient客户端
  • 第三步:调用客户端的NewListPager方法,传入目标订阅ID、目标区域标识,遍历分页结果即可获取全量VM规格列表

完整示例代码

package main

import (
	"context"
	"log"

	"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/v5"
)

func main() {
	// 替换为实际的订阅ID
	subscriptionID := "your-subscription-id"
	// 替换为目标区域的官方标识,例如chinanorth3、eastus
	targetRegion := "chinanorth3"

	// 初始化认证凭证
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		log.Fatalf("认证失败: %v", err)
	}

	// 初始化VM规格查询客户端
	client, err := armcompute.NewVirtualMachineSizesClient(subscriptionID, cred, nil)
	if err != nil {
		log.Fatalf("初始化客户端失败: %v", err)
	}

	// 遍历分页获取所有VM规格
	pager := client.NewListPager(targetRegion, nil)
	for pager.More() {
		page, err := pager.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("查询分页失败: %v", err)
		}
		for _, vmSize := range page.Value {
			// 可按需提取其他属性,比如磁盘大小、最大网卡数、GPU配置等
			log.Printf("规格名称: %s, 核心数: %d, 内存大小(MB): %d",
				to.String(vmSize.Name),
				to.Int32(vmSize.NumberOfCores),
				to.Int32(vmSize.MemoryInMB))
		}
	}
}

注意事项

  • 运行代码前需要完成Azure身份认证,本地开发环境可直接通过az login登录后自动获取凭证,生产环境可通过环境变量、托管身份等方式配置认证
  • 目标区域需使用Azure官方的区域英文字段标识,不可使用区域中文/本地化显示名
  • 返回的VM规格列表中还包含支持的磁盘类型、最大网卡数、GPU配置等扩展属性,可根据业务需要提取对应字段使用

内容的提问来源于stack exchange,提问作者Bryan Carty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:06:02