我正在使用Bicep创建一个模板Spec,它工作得很好。使用uiFormDefinition文件向模板Spec添加自定义UI也有效。但是,当我试图在UI定义中使用控件'Microsoft.Solutions.ArmApiControl‘时,它在错误Failed to create element of type: 'Microsoft.Solutions.ArmApiControl' named 'sqlCapabilities'中失败。我发现可以通过从path属性中删除所有引用函数来消除错误,如下所示:
{
"name": "sqlCapabilities",
"type": "Microsoft.Solutions.ArmApiControl",
"request": {
"method": "GET",
"path": "/subscriptions/34d76722-9b63-464d-b742-11bf072d1fc1/providers/Microsoft.Sql/locations/westeurope/capabilities?api-version=2021-11-01"
}
}..。但这似乎并没有起到什么作用。(即使这样可以工作,如果没有引用函数,元素也不会很有用。)
在阅读文档时,我注意到Azure Portal中有两个沙箱用于开发uiFormDefinition文件:
它们看起来很相似,但是它们使用不同的模式: UI定义沙箱使用https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#,表单沙箱使用https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json。表单沙箱还有一些额外的选项,比如指定"Package“和"CUID”的能力。
这两个沙箱都有一个记录UI元素的列表,它们都指向相同的目的地: Azure托管应用程序文档。
问题是:当我使用"Create“时,'Microsoft.Solutions.ArmApiControl‘UI元素工作得很好,即使使用location()之类的引用函数也是如此。但是,我不能使用模板Spec:它附加了OK的结果文件,但是当试图在Portal中部署模板Spec时,我得到了以下错误:Invalid UIFormDefinition Schema. Click here to fallback to default experience.
在“表单视图沙箱”中使用引用函数和/或'Microsoft.Solutions.ArmApiControl‘会导致本问题开头提到的问题。
进一步的实验表明,所有函数似乎都在两个沙箱中工作,但引用函数(如location()、resourceGroup()或subscription())除外:这些函数只在UI定义沙箱中工作。同样的情况也适用于某些UI元素。
也许我错过了它,但我无法找到这种行为被记录在哪里。
是否有方法在模板规范的表单定义中使用引用函数和Microsoft.Solutions.ArmApiControl?如果是的话,我怎样才能做到呢?
发布于 2022-11-30 21:17:30
博士-你可以做你想做的事,看看这个:https://techcommunity.microsoft.com/t5/azure-governance-and-management/using-azure-templatespecs-with-a-custom-ui/ba-p/3586173
长版本,门户用户界面有2种模式/格式(如您所发现),有一个“旧”版本CreateUIDefinition.MultiVm.json和一个更新版本uiFormDefinition.schema.json --新版本基本上是旧版本的超集.也就是说,它支持所有的旧东西,并有一些新的东西。这一区别还没有得到很好的记录。
templateSpecs只支持“更新”模式。
有帮助吗?
https://stackoverflow.com/questions/74627983
复制相似问题