【问题标题】:ARM template transform array of strings into array of objectsARM模板将字符串数组转换为对象数组
【发布时间】:2019-07-03 19:19:16
【问题描述】:

不确定此功能是否存在。我正在尝试将来自 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"
  },
]

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 这行得通。谢谢。奇怪的是它被称为输入,而不是输出。
    猜你喜欢
    • 2022-11-11
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多