Типы данных в шаблонах ARM

В этой статье описываются типы данных, поддерживаемые в шаблонах Azure Resource Manager (шаблонах ARM).

Поддерживаемые типы

В шаблоне ARM можно использовать следующие типы данных.

  • array
  • bool
  • INT
  • объект
  • secureObject
  • securestring
  • строка

Массивы

Массивы начинаются с левой квадратной скобки ([) и заканчиваются правой квадратной скобкой (]). Массив можно объявить в одной строке или нескольких строках. Каждый элемент отделяется запятой.

"parameters": {
  "exampleArray": {
    "type": "array",
    "defaultValue": [
      1,
      2,
      3
    ]
  }
},

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('exampleArray')]"
  },
  "firstExampleArrayElement": {
    "type": "int",
    "value": "[parameters('exampleArray')[0]]"
  }
}

Элементы массива могут быть одного типа или разных типов.

"variables": {
  "mixedArray": [
    "[resourceGroup().name]",
    1,
    true,
    "example string"
  ]
}

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('mixedArray')]"
  },
  "firstMixedArrayElement": {
    "type": "string",
    "value": "[variables('mixedArray')[0]]"
  }
}

Логические значения

При указании логических значений используйте true или false. Не заключайте значение в кавычки.

"parameters": {
  "exampleBool": {
    "type": "bool",
    "defaultValue": true
  }
},

Целые числа

При указании целочисленных значений не используйте кавычки.

"parameters": {
  "exampleInt": {
    "type": "int",
    "defaultValue": 1
  }
}

Для целых чисел, переданных в качестве встроенных параметров, диапазон значений может быть ограничен пакетом SDK или программой командной строки, используемой для развертывания. Например, при использовании PowerShell для развертывания шаблона целочисленные типы могут находиться в диапазоне от-2147483648 до 2147483647. Чтобы избежать этого ограничения, укажите большие целочисленные значения в файле параметров. Типы ресурсов применяют собственные ограничения для свойств целочисленных значений.

Объект

Объекты начинаются с левой фигурной скобки ({) и заканчиваются правой фигурной скобкой (}). Каждое свойство в объекте состоит из key и value. key и value заключены в двойные кавычки и разделены двоеточием (:). Каждое свойство отделяется запятой.

"parameters": {
  "exampleObject": {
    "type": "object",
    "defaultValue": {
      "name": "test name",
      "id": "123-abc",
      "isCurrent": true,
      "tier": 1
    }
  }
}

Свойство можно получить из объекта с точечной нотацией.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "exampleObject": {
            "type": "object",
            "defaultValue": {
                "name": "test name",
                "id": "123-abc",
                "isCurrent": true,
                "tier": 1
            }
        }
    },
    "resources": [
    ],
    "outputs": {
        "nameFromObject": {
            "type": "string",
            "value": "[parameters('exampleObject').name]"
        }
    }
}

В JSON объект представляет собой неупорядоченную коллекцию из нуля или более пар "ключ-значение". Упорядочение может быть разным в зависимости от реализации. Например функция Bicep items() сортирует объекты в алфавитном порядке. В других местах можно сохранить исходное упорядочение. Из-за этого недетерминированного, избегайте принятия каких-либо предположений о упорядочении ключей объектов при написании кода, который взаимодействует с параметрами развертывания и выходными данными.

Строки

Строки помечаются двойными кавычками.

"parameters": {
  "exampleString": {
    "type": "string",
    "defaultValue": "test value"
  }
},

Защищенные строки и объекты

Защищенная строка использует тот же формат, что и строка, а защищенный объект использует тот же формат, что и объект. Если для параметра задана защищенная строка или защищенный объект, значение параметра не сохраняется в журнале развертывания и не регистрируется. Однако, если задать для свойства защищенное значение, которое не ожидается, это значение не будет защищено. Например, если для защищенной строки задан тег, это значение сохраняется как обычный текст. Используйте защищенные строки для паролей и секретов.

Ниже представлены примеры двух параметров.

"parameters": {
  "password": {
    "type": "securestring"
  },
  "configValues": {
    "type": "secureObject"
  }
}

Примечание.

Не используйте защищенные строки или объекты в качестве выходных значений. Если вы включите защищенное значение в качестве выходного значения, оно не отображается в журнале развертывания и его невозможно получить из другого шаблона. Вместо этого сохраните защищенное значение в хранилище ключей и передайте его в качестве параметра из хранилища ключей.

Следующие шаги

Подробнее о создании шаблонов см. в разделе Описание структуры и синтаксиса шаблонов ARM.