如何使用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
相关产品推荐
相关产品推荐

