在 Azure ARM 模板中使用 Empty/Optional 参数
Using Empty/Optional Parameters in Azure ARM Template
我在为 Azure Web 应用程序设置 ARM 模板时遇到问题,因为如果设置了参数,我无法在它设置值的地方添加 ConnectionString 参数,但如果参数未设置,则留空(默认)' t 组。
这是 template.json 文件中的样子:
"connectionStrings": [
{
"name": "[parameters('connString').connName)]",
"connectionString": "[parameters('connString').string]",
"type": "[parameters('connString').connType]"
}
],
并且在 parameters.json 文件中:
"connString": {
"value": {
"connName": "",
"string": "",
"connType": ""
}
},
当 运行 上面的部署失败时 "Parameter name cannot be empty"
如果参数为空,我尝试使用 equals 函数将值设置为空,但如果参数已填写,则设置参数,但它不喜欢空值。
"name": "[if(equals(parameters('connString').connName,''),'',parameters('connString').connName)]"
还尝试了一个空函数:
"name": "[not(empty(parameters('connString').connName))]"
但是 returns "False" 如果为空 "True" 如果参数已设置(按设计)
如果我将虚拟值设置为参数,部署工作正常,是否可以设置一个函数或类似的东西,所以如果参数为空,它使用发送的任何值,就好像 connectionStrings 部分不存在一样模板?这些参数是可选的,但看起来像是因为它们在实际的 template.json 文件中,它需要一个值。
干杯
编辑
转到 post 我的最终模板是什么样子的,以防其他人需要帮助。
模板文件
变量
"variables": {
"empty": []
},
资源
"connectionStrings": "[if(empty(parameters('connString')), variables('empty'), array(parameters('connString')))]",
参数文件
如果设置连接字符串
"connString": {
"value": [{
"name": "test",
"connectionString": "ufgndjkngsdgjkn",
"type": "Custom"
}]
},
如果不想设置连接字符串
"connString": {
"value": [
]
},
你应该这样做:
参数:
"connString": {
"value": {}
},
变量:
"empty": [],
模板:
"connectionStrings": "[if(empty(parameters('connString')), variables('empty'), array(parameters('connString')))]"
你可以试试:
参数:
"connString": [{
"value": {
"name": null,
"connectionString": null,
"type": "Custom"
}
}],
变量:
模板:
"connectionStrings": "[if(empty(parameters('connString')[0].value.name), json('null'), parameters('connString'))]"
我在为 Azure Web 应用程序设置 ARM 模板时遇到问题,因为如果设置了参数,我无法在它设置值的地方添加 ConnectionString 参数,但如果参数未设置,则留空(默认)' t 组。
这是 template.json 文件中的样子:
"connectionStrings": [
{
"name": "[parameters('connString').connName)]",
"connectionString": "[parameters('connString').string]",
"type": "[parameters('connString').connType]"
}
],
并且在 parameters.json 文件中:
"connString": {
"value": {
"connName": "",
"string": "",
"connType": ""
}
},
当 运行 上面的部署失败时 "Parameter name cannot be empty" 如果参数为空,我尝试使用 equals 函数将值设置为空,但如果参数已填写,则设置参数,但它不喜欢空值。
"name": "[if(equals(parameters('connString').connName,''),'',parameters('connString').connName)]"
还尝试了一个空函数:
"name": "[not(empty(parameters('connString').connName))]"
但是 returns "False" 如果为空 "True" 如果参数已设置(按设计)
如果我将虚拟值设置为参数,部署工作正常,是否可以设置一个函数或类似的东西,所以如果参数为空,它使用发送的任何值,就好像 connectionStrings 部分不存在一样模板?这些参数是可选的,但看起来像是因为它们在实际的 template.json 文件中,它需要一个值。
干杯
编辑 转到 post 我的最终模板是什么样子的,以防其他人需要帮助。
模板文件
变量
"variables": {
"empty": []
},
资源
"connectionStrings": "[if(empty(parameters('connString')), variables('empty'), array(parameters('connString')))]",
参数文件
如果设置连接字符串
"connString": {
"value": [{
"name": "test",
"connectionString": "ufgndjkngsdgjkn",
"type": "Custom"
}]
},
如果不想设置连接字符串
"connString": {
"value": [
]
},
你应该这样做:
参数:
"connString": {
"value": {}
},
变量:
"empty": [],
模板:
"connectionStrings": "[if(empty(parameters('connString')), variables('empty'), array(parameters('connString')))]"
你可以试试:
参数:
"connString": [{
"value": {
"name": null,
"connectionString": null,
"type": "Custom"
}
}],
变量:
模板:
"connectionStrings": "[if(empty(parameters('connString')[0].value.name), json('null'), parameters('connString'))]"