недопустимая ошибка Json при попытке использовать справочную функцию в Azure ARM для создания правил брандмауэра на основе свойства ресурса - PullRequest
1 голос
/ 21 июня 2019

Я создаю правила DNAT брандмауэра Azure как часть конвейера Azure Devops. Я не хочу указывать публичный IP-адрес вручную, я хочу получить это значение из свойств публичного имени. Таким образом, если мы клонируем конвейер или перестраиваем, нам не нужно обновлять IP-адрес.

Это просто выдержка из шаблона ARM. Этот первый пример работает.

"destinationAddresses": [
            "52.180.91.89"
]

Моя попытка заменить его приведена ниже. Обратите внимание, что публичный IP-адрес создается в шаблоне ARM, поэтому я не ссылаюсь на полный путь к ресурсу.

"destinationAddresses": "[reference(variables('arm_firewall_buildagentip')).ipAddress]"

Ошибка, которую я получаю, ниже. Он возвращает правильное значение, но я не уверен, как его отформатировать, чтобы его можно было принять в правиле брандмауэра.

##[error]BadRequest: {
  "error": {
    "code": "InvalidRequestFormat",
    "message": "Cannot parse the request.",
    "details": [
      {
        "code": "InvalidJson",
        "message": "Error converting value \"52.180.91.89\" to type 'System.Collections.Generic.List`1[System.String]'. Path 'properties.natRuleCollections[0].properties.rules[1].destinationAddresses', line 1, position 2880."
      }
    ]
  }
} undefined

1 Ответ

0 голосов
/ 21 июня 2019

у вас есть 2 варианта, преобразовать его в массив :

"[array(reference(variables('arm_firewall_buildagentip')).ipAddress)]"

или вы можете использовать свойство, которое принимает строку :

"destinationAddressPrefix": "[reference(variables('arm_firewall_buildagentip')).ipAddress]"
...