使用 Azure Rest API 获取 Azure 订阅的 SKU 和 SKU 容量列表
Get list of SKUs and SKU capacities for Azure Subscription using Azure Rest API
我们正在开发一款应用程序,允许我们的 Azure 管理员监控组织中人员的 Azure 资源请求。
有一个要求,我想通过一些 API(如果可用)获取所有可能的 SKU 和 SKU 容量的列表。我本可以对这些值进行硬编码,但考虑到 Microsoft 对 Azure 订阅计划进行更改的频率,我想让它更通用,并由 Azure 本身来喂狗。
我在 Azure Rest API 下找不到任何 API 端点,它为我们提供了所请求资源类型的 SKU 和容量列表。
有没有人已经弄明白了?如果不是,更好的替代方法是什么?
拉胡尔。
如 4c74356b41 所述,有些可能具有该功能,有些则没有。我们可以从官方 document. And we can get some List SKU REST APIs, detail please refer to screenshot. You also can give your feedback 那里得到 Azure REST API 到 Azure 团队。
Azure 资源管理器中 Azure SKU API 的模式是 HTTP GET {resourceId}/skus?api-version=...
正如其他人所指出的,似乎没有一种好方法可以发现哪些 ARM 资源类型已经实现了 SKU API。如果您今天正在寻找通用选项,我会考虑以下方法 --
1) 收集订阅中的 ARM 资源 ID 列表。您可以使用 ARM 资源 API 获取此列表。
2) 对于每个资源 ID,调用以下命令检索 SKU:GET {resourceId}/skus?api-version=...
3) 跟踪哪些 ARM 资源类型 return 非 2xx 状态代码。这些资源类型未实现 SKU API,您的代码现在应该忽略这些资源类型。
以下是两种常见 ARM 资源类型的 SKU API 的一些示例:
armclient get /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/{name}/skus?api-version=2017-03-30
armclient get /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/serverFarms/{name}/skus?api-version=2014-04-01
看起来 Azure 已经使这个 REST API 现在可用了:
获取订阅中的所有资源。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/skus?api-version=2021-07-01
响应示例:
{
"value": [
{
"resourceType": "virtualMachines",
"locations": [
"westus"
],
"capabilities": [
{
"name": "MaxResourceVolumeMB",
"value": "20480"
},
{
"name": "OSVhdSizeMB",
"value": "1047552"
},
{
"name": "vCPUs",
"value": "1"
},
{
"name": "HyperVGenerations",
"value": "V1"
},
{
"name": "MemoryGB",
"value": "0.75"
},
{
"name": "MaxDataDiskCount",
"value": "1"
},
{
"name": "LowPriorityCapable",
"value": "False"
},
{
"name": "PremiumIO",
"value": "False"
},
{
"name": "vCPUsAvailable",
"value": "1"
},
{
"name": "ACUs",
"value": "50"
},
{
"name": "vCPUsPerCore",
"value": "1"
},
{
"name": "EphemeralOSDiskSupported",
"value": "False"
},
{
"name": "AcceleratedNetworkingEnabled",
"value": "False"
},
{
"name": "RdmaEnabled",
"value": "False"
},
{
"name": "MaxNetworkInterfaces",
"value": "2"
}
],
"locationInfo": [
{
"location": "westus",
"zones": [
"2",
"1"
],
"zoneDetails": [
{
"name": [
"2"
],
"capabilities": [
{
"name": "UltraSSDAvailable",
"value": "True"
}
]
}
]
}
],
"name": "Standard_A0",
"tier": "Standard",
"size": "A0",
"family": "standardA0_A7Family"
},
{
"resourceType": "virtualMachines",
"locations": [
"westus"
],
"capabilities": [
{
"name": "MaxResourceVolumeMB",
"value": "71680"
},
{
"name": "OSVhdSizeMB",
"value": "1047552"
},
{
"name": "vCPUs",
"value": "1"
},
{
"name": "HyperVGenerations",
"value": "V1"
},
{
"name": "MemoryGB",
"value": "1.75"
},
{
"name": "MaxDataDiskCount",
"value": "2"
},
{
"name": "LowPriorityCapable",
"value": "True"
},
{
"name": "PremiumIO",
"value": "False"
},
{
"name": "vCPUsAvailable",
"value": "1"
},
{
"name": "ACUs",
"value": "100"
},
{
"name": "vCPUsPerCore",
"value": "1"
},
{
"name": "EphemeralOSDiskSupported",
"value": "False"
},
{
"name": "AcceleratedNetworkingEnabled",
"value": "False"
},
{
"name": "RdmaEnabled",
"value": "False"
},
{
"name": "MaxNetworkInterfaces",
"value": "2"
}
],
"locationInfo": [
{
"location": "westus",
"zones": [
"1",
"2",
"3"
]
}
],
"name": "Standard_A1",
"tier": "Standard",
"size": "A1",
"family": "standardA0_A7Family"
}
],
"nextLink": null
}
我们正在开发一款应用程序,允许我们的 Azure 管理员监控组织中人员的 Azure 资源请求。
有一个要求,我想通过一些 API(如果可用)获取所有可能的 SKU 和 SKU 容量的列表。我本可以对这些值进行硬编码,但考虑到 Microsoft 对 Azure 订阅计划进行更改的频率,我想让它更通用,并由 Azure 本身来喂狗。
我在 Azure Rest API 下找不到任何 API 端点,它为我们提供了所请求资源类型的 SKU 和容量列表。
有没有人已经弄明白了?如果不是,更好的替代方法是什么?
拉胡尔。
如 4c74356b41 所述,有些可能具有该功能,有些则没有。我们可以从官方 document. And we can get some List SKU REST APIs, detail please refer to screenshot. You also can give your feedback 那里得到 Azure REST API 到 Azure 团队。
Azure 资源管理器中 Azure SKU API 的模式是 HTTP GET {resourceId}/skus?api-version=...
正如其他人所指出的,似乎没有一种好方法可以发现哪些 ARM 资源类型已经实现了 SKU API。如果您今天正在寻找通用选项,我会考虑以下方法 --
1) 收集订阅中的 ARM 资源 ID 列表。您可以使用 ARM 资源 API 获取此列表。
2) 对于每个资源 ID,调用以下命令检索 SKU:GET {resourceId}/skus?api-version=...
3) 跟踪哪些 ARM 资源类型 return 非 2xx 状态代码。这些资源类型未实现 SKU API,您的代码现在应该忽略这些资源类型。
以下是两种常见 ARM 资源类型的 SKU API 的一些示例:
armclient get /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/{name}/skus?api-version=2017-03-30
armclient get /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/serverFarms/{name}/skus?api-version=2014-04-01
看起来 Azure 已经使这个 REST API 现在可用了:
获取订阅中的所有资源。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/skus?api-version=2021-07-01
响应示例:
{
"value": [
{
"resourceType": "virtualMachines",
"locations": [
"westus"
],
"capabilities": [
{
"name": "MaxResourceVolumeMB",
"value": "20480"
},
{
"name": "OSVhdSizeMB",
"value": "1047552"
},
{
"name": "vCPUs",
"value": "1"
},
{
"name": "HyperVGenerations",
"value": "V1"
},
{
"name": "MemoryGB",
"value": "0.75"
},
{
"name": "MaxDataDiskCount",
"value": "1"
},
{
"name": "LowPriorityCapable",
"value": "False"
},
{
"name": "PremiumIO",
"value": "False"
},
{
"name": "vCPUsAvailable",
"value": "1"
},
{
"name": "ACUs",
"value": "50"
},
{
"name": "vCPUsPerCore",
"value": "1"
},
{
"name": "EphemeralOSDiskSupported",
"value": "False"
},
{
"name": "AcceleratedNetworkingEnabled",
"value": "False"
},
{
"name": "RdmaEnabled",
"value": "False"
},
{
"name": "MaxNetworkInterfaces",
"value": "2"
}
],
"locationInfo": [
{
"location": "westus",
"zones": [
"2",
"1"
],
"zoneDetails": [
{
"name": [
"2"
],
"capabilities": [
{
"name": "UltraSSDAvailable",
"value": "True"
}
]
}
]
}
],
"name": "Standard_A0",
"tier": "Standard",
"size": "A0",
"family": "standardA0_A7Family"
},
{
"resourceType": "virtualMachines",
"locations": [
"westus"
],
"capabilities": [
{
"name": "MaxResourceVolumeMB",
"value": "71680"
},
{
"name": "OSVhdSizeMB",
"value": "1047552"
},
{
"name": "vCPUs",
"value": "1"
},
{
"name": "HyperVGenerations",
"value": "V1"
},
{
"name": "MemoryGB",
"value": "1.75"
},
{
"name": "MaxDataDiskCount",
"value": "2"
},
{
"name": "LowPriorityCapable",
"value": "True"
},
{
"name": "PremiumIO",
"value": "False"
},
{
"name": "vCPUsAvailable",
"value": "1"
},
{
"name": "ACUs",
"value": "100"
},
{
"name": "vCPUsPerCore",
"value": "1"
},
{
"name": "EphemeralOSDiskSupported",
"value": "False"
},
{
"name": "AcceleratedNetworkingEnabled",
"value": "False"
},
{
"name": "RdmaEnabled",
"value": "False"
},
{
"name": "MaxNetworkInterfaces",
"value": "2"
}
],
"locationInfo": [
{
"location": "westus",
"zones": [
"1",
"2",
"3"
]
}
],
"name": "Standard_A1",
"tier": "Standard",
"size": "A1",
"family": "standardA0_A7Family"
}
],
"nextLink": null
}