使用 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 现在可用了:

Resource Skus - List

获取订阅中的所有资源。

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
}