【问题标题】:List available sub-resources for provider resource type列出提供者资源类型的可用子资源
【发布时间】:2019-10-03 23:31:52
【问题描述】:

我正在尝试在给定订阅中收集 Azure 资源的完整 JSON 表示,但不知道如何枚举给定资源类型的可用子资源。

例如,我可以获得 Microsoft.Web/sites/{name} 资源,但该响应中没有任何内容告诉我 Microsoft.Web/sites/{name}/config 存在。我也无法在 Provider 对象中找到对 /config 资源的任何引用。

Azure 资源资源管理器似乎以很少的性能开销动态枚举它们,所以我相信可以做到这一点。我只是不知道怎么做。使用 azure-arm-resource nom 包的 NodeJS 示例:

// Returns a data structure, but nothing about subtypes.
let p = client.providers.get("Microsoft.Web");
// Contains the resource, but not the resources subtypes (e.g. config/appsettings
let r = client.resources.getById(resourceId, apiVersion);

我正在 API 中寻找能够为我提供一系列子类型的东西;对于 Microsoft.Web/sites,类似于 ["config"、"containerlogs"、"diagnostics"...] 等。

【问题讨论】:

  • 它需要在 NodeJS 项目中工作吗?
  • 理想情况下。我的项目目前在 Node 和 Typescript 中。话虽如此,如果你能回答如何通过 REST、.NET 或任何其他 SDK 枚举子资源,那么我应该能够在 Node 中弄清楚。
  • PowerShell 解决方案有用吗?
  • 是的,如果它得到问题中的属性。

标签: azure azure-resource-manager azure-rest-api


【解决方案1】:

这将是您正在寻找的电话:

https://management.azure.com/subscriptions/xxx/providers/Microsoft.Web?api-version=2019-05-10

它返回如下内容:

{
    "resourceTypes": [
        {
            "resourceType": "components",
            "locations": [ xxx ],
            "apiVersions": [ yyy ],
        },
        xxx,
        yyy
    ]
}

因此,您需要更仔细地检查调用的输出。或者只是做一个简单的休息请求并解析输出。但老实说,components() 并没有太大变化,您不妨硬编码列表。

【讨论】:

  • 这是我正在打的电话。但是,我没有将“站点/配置”、“站点/诊断”等作为资源类型返回。检查了资源浏览器,也检查了我没有忘记 nextPage 什么的。还是没有骰子。你看到 Microsoft.Web 下的配置了吗?虽然我想对所有资源都这样做,但目前访问 Microsoft.Web/sites/config 是我的严峻考验。
  • config 不是资源类型,它只是站点的属性。可用的资源类型有:hostNameBindings、networkConfig、premieraddons、slots、slots/hostNameBindings、slots/networkConfig
  • 明白。无论我们称它们为资源类型、子类型还是属性:如何获取它们的列表?
  • 好吧,如果这些是资源类型 - api 调用会暴露它们。如果它们是属性 - 检索对象并检查(您无法真正获得属性列表,您可以检查 api 定义,但它可能不会列出所有属性)。属性=!资源类型。资源类型是依赖于父资源的资源。 property - 只是资源的一个属性,就像它的名字一样
  • 我明白这一点。我想以编程方式获取这些属性。我该怎么做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
相关资源
最近更新 更多