Azure ComputeSku costs字段全为null问题咨询(azure-mgmt-compute 1.41.3)
问题原因及解决方法
核心原因
azure-mgmt-compute 1.41.3版本调用list_skus接口时,默认不会返回costs字段数据。Azure Compute Resource Provider API本身不会主动包含成本信息,必须通过显式指定扩展参数来触发返回该字段。
解决步骤
- 修改调用参数:在调用
resource_skus.list()方法时,添加expand='costs'参数,示例代码如下:
from azure.mgmt.compute import ComputeManagementClient from azure.identity import DefaultAzureCredential credential = DefaultAzureCredential() compute_client = ComputeManagementClient(credential, "<your-subscription-id>") # 添加expand参数获取costs数据 skus = compute_client.resource_skus.list(expand='costs') for sku in skus: print(f"SKU: {sku.name}, Costs: {sku.costs}")
- 权限验证:确保你的Azure身份凭据(如服务主体、用户账户)拥有
Microsoft.Compute/skus/read权限,这是获取SKU及成本数据的基础权限(通常默认已包含在订阅级别的读者角色中)。
补充说明
这种现象不仅存在于virtualMachines、availabilitySets相关SKU,所有Compute SKU类型的costs字段都需要通过expand='costs'参数才能获取,这是Azure API的设计逻辑,而非SDK版本的Bug。
内容的提问来源于stack exchange,提问作者Michael Benguigui
相关产品推荐
相关产品推荐

