我希望能够将内联对象作为参数值传递给链接模板。用例是我有一个部署服务总线(或其他资源)的模板和一个部署 Web 应用程序的模板。我想构建一个结合这两个组件的模板。我希望 Web 应用程序模板有一个名为的对象参数userProvidedAppSettings
,我可以将其与一些默认值结合,然后将该生成的对象分配为 Microsoft.Web/site/config/appsettings 资源的属性值。
看来您目前不能在参数的内联对象值中使用 reference 或 listkeys 函数,请参见userProvidedAppSettings
下面的示例。
这可能吗,我没有使用适当的约定?我在文档中没有看到任何关于此的内容。
{
"apiVersion": "[parameters('apiVersion')]",
"name": "[variables('serviceBusDeploymentName')]",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[parameters('templateOneUri')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"environment": { "value": "[parameters('environment')]" },
"appName": { "value": "[parameters('appName')]" }
}
}
},
{
"apiVersion": "[parameters('apiVersion')]",
"name": "[variables('applicationDeploymentName')]",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[parameters('templateTwoUri')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"environment": { "value": "[parameters('environment')]" },
"appName": { "value": "[parameters('appName')]" },
"userProvidedAppSettings" : { "value": { "serviceBusConnectionString": "[reference(variables('serviceBusDeploymentName')).outputs.connectionString.value]" } }
}
}
}
编辑:
澄清一下,这是关于链接模板参数值的行为。我特别问这个:
"parameters": {
// Allowed:
"param1": { "value": "[parameters('environment')]" },
"param2": { "value": "[reference('otherDeployment').outputs.something.value]" },
"param3": { "value": { "this": "is allowed",
"inline": "is allowed" } },
// NOT Allowed
"param4": { "value": { "this": "is NOT allowed".
"foo": "[reference('otherDeployment').outputs.something.value]" } }
}
reference
输出被允许作为值,内联对象被允许作为值,但其值包含 a reference
(或函数的隐式引用list
)的内联对象是不允许的。我想知道这是否可以通过不同的约定实现,或者是否应该将其添加到所需功能的列表中。