Поделиться через


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

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

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

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

  • массив
  • булевая переменная (bool)
  • инт
  • объект
  • 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".