ARM模板将字符串数组转换为对象数组

时间:2019-07-03 19:19:16

标签: azure azure-resource-manager arm-template

不确定此功能是否存在。我正在尝试将来自Azure DevOps构建参数的逗号分隔IP地址列表转换为对象数组。到目前为止,它只是将逗号分隔的列表分成字符串数组,但是模板需要一个对象数组。

参数值是用逗号分隔的IP地址列表。 例如“ 192.168.0.1,192.168.0.2 / 32,127.0.0.1

ARM模板如下所示:

"variables": {
  "ipaddresses": "[split(parameters('ipaddresses'), ',')]"
},
"resources": [
  ...
    "ipRestrictions": "[stringArrToObjArr(variables('ipaddresses'))]" <--
  ...
]

理想情况下,具有上述箭头的功能将为ipRestictions生成一个值,如下所示:

[
  {
    "ipAddress": "192.168.0.1"
  },
  {
    "ipAddress": "192.168.0.2/32"
  },
  {
    "ipAddress": "127.0.0.1"
  },
]

1 个答案:

答案 0 :(得分:2)

您可以使用copy()函数来做到这一点:

"variables": {
  "ipaddresses": "[split(parameters('ipaddresses'), ',')]"
  "copy": [
    {
      "name": "myVariable",
      "count": "[length(variables('ipaddresses'))]",
      "input": {
        "ipAddress": "[variables('ipaddresses')[copyIndex('myVariable')]]"
      }
    }
  ]
},

这会将所需的对象返回到名为myVariable的变量中。如果您想重命名>>也不要忘记在copyIndex()内部重命名