使用Python获取Azure子网ID时报InvalidApiVersionParameter错误如何解决?
报错原因
你使用的azure-mgmt-network==19.0.0版本默认绑定的Azure网络资源API版本为2021-02-01,该版本不在你当前访问的Azure云环境支持列表中,手动指定API版本未生效通常是因为未在客户端初始化阶段正确传参。
解决步骤
- 初始化
NetworkManagementClient时显式指定支持的API版本,选择错误提示中列出的版本即可,示例代码如下:
from azure.mgmt.network import NetworkManagementClient from azure.identity import DefaultAzureCredential network_client = NetworkManagementClient( credential = DefaultAzureCredential(), subscription_id = "<你的Azure订阅ID>", api_version = "2021-04-01" # 此处使用错误提示里列出的支持版本即可 )
- 确认子网查询方法的参数顺序正确,
subnets.get参数依次为资源组名、虚拟网络名、子网名,不要混淆虚拟网络和子网的参数位置,调用示例:
subnet = network_client.subnets.get( resource_group_name = "<资源组名称>", virtual_network_name = "<虚拟网络名称>", subnet_name = "<目标子网名称>" ) # 输出子网资源ID print(subnet.id)
- 如果上述方法无效,可以直接降级
azure-mgmt-network版本到默认API在支持列表内的版本,比如18.0.0版本默认API为2021-01-01,属于官方返回的支持版本,降级命令:pip install azure-mgmt-network==18.0.0
若你使用的是世纪互联运营的中国区Azure,需要在初始化凭证时额外指定中国区云环境,避免调用全球Azure端点导致API版本校验失败。
内容的提问来源于stack exchange,提问作者Hkni
相关产品推荐
相关产品推荐

