在 Azure ARM 模板中使用空/可选参数

Cla*_*ers 6 azure azure-automation azure-web-app-service azure-rm-template

我在为 Azure Web 应用程序设置 ARM 模板时遇到问题,因为我无法添加 ConnectionString 参数,如果设置了参数,它会在其中设置值,但如果未设置参数,则留空(默认)。

下面是它在 template.json 文件中的样子:

"connectionStrings": [
        {
          "name": "[parameters('connString').connName)]",
          "connectionString": "[parameters('connString').string]",
          "type": "[parameters('connString').connType]"
        }
      ],
Run Code Online (Sandbox Code Playgroud)

在 parameters.json 文件中:

"connString": {
        "value": {
            "connName": "",
            "string": "",
            "connType": ""
        }
    },
Run Code Online (Sandbox Code Playgroud)

当使用上述方式运行部署时,它在“参数名称不能为空”时失败我尝试使用 equals 函数将值设置为空,如果参数为空,但如果参数已填写,则设置参数,但它没有不喜欢空值。

"name": "[if(equals(parameters('connString').connName,''),'',parameters('connString').connName)]"
Run Code Online (Sandbox Code Playgroud)

还尝试了一个空函数:

 "name": "[not(empty(parameters('connString').connName))]"
Run Code Online (Sandbox Code Playgroud)

但是,如果为空,则返回“False”,如果设置了参数,则返回“True”(按设计)

如果我将虚拟值设置为参数,部署工作正常,是否可以设置一个函数或类似的东西,所以如果参数为空,它使用发送的任何值,就好像模板中不存在 connectionStrings 部分一样?这些参数是可选的,但看起来是因为它们在实际的 template.json 文件中,它需要一个值。

干杯

编辑 要发布我的最终模板的样子,以防其他人需要帮助。

模板文件

变量

"variables": {
"empty": []
},
Run Code Online (Sandbox Code Playgroud)

资源

"connectionStrings": "[if(empty(parameters('connString')), variables('empty'), array(parameters('connString')))]",
Run Code Online (Sandbox Code Playgroud)

参数文件

如果设置连接字符串

 "connString": {
        "value": [{
            "name": "test",
            "connectionString": "ufgndjkngsdgjkn",
            "type": "Custom"
        }]
    },
Run Code Online (Sandbox Code Playgroud)

如果不想设置连接字符串

"connString": {
    "value": [
    ]
},
Run Code Online (Sandbox Code Playgroud)

4c7*_*b41 6

你应该这样做:

参数:

"connString": {
    "value": {}
},
Run Code Online (Sandbox Code Playgroud)

变量:

"empty": [],
Run Code Online (Sandbox Code Playgroud)

模板:

"connectionStrings": "[if(empty(parameters('connString')), variables('empty'), array(parameters('connString')))]"
Run Code Online (Sandbox Code Playgroud)