Tipos de dados em modelos do ARM

Este artigo descreve os tipos de dados com suporte em modelos do Azure Resource Manager (modelos do ARM).

Tipos com suporte

Em um modelo do ARM, você pode usar estes tipos de dados:

  • array
  • bool
  • INT
  • objeto
  • secureObject
  • secureString
  • string

Matrizes

As matrizes começam com um colchete esquerdo ( [) e terminam com um colchete direito (]). Uma matriz pode ser declarada em uma única linha ou em várias. Cada elemento é separado por vírgula.

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

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

Os elementos de uma matriz podem ser do mesmo tipo ou de tipos diferentes.

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

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

Boolianos

Ao especificar valores boolianos, use true ou false. Não coloque o valor entre aspas.

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

Inteiros

Ao especificar valores inteiros, não use aspas.

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

Para números inteiros passados como parâmetros embutidos, o intervalo de valores pode ser limitado pelo SDK ou pela ferramenta de linha de comando usada para implantação. Por exemplo, ao usar o PowerShell para implantar um modelo, os tipos de números inteiros podem variar de -2147483648 a 2147483647. Para evitar essa limitação, especifique valores inteiros grandes em um arquivo de parâmetro. Os tipos de recurso aplicam seus próprios limites para propriedades de números inteiros.

Objetos

Os objetos começam com uma chave esquerda ({) e terminam com uma chave direita (}). Cada propriedade em um objeto consiste em key e value. O key e value são colocados entre aspas duplas e separados por dois-pontos (:). Cada propriedade é separada por vírgula.

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

Você pode obter uma propriedade de um objeto com notação de ponto.

{
    "$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]"
        }
    }
}

No JSON, um objeto é uma coleção não ordenada de zero ou mais pares chave-valor. A ordenação pode ser diferente, dependendo das implementações. Por exemplo, a função items() do Bicep classifica os objetos na ordem alfabética. Em outros locais, a ordenação original pode ser preservada. Devido a esse não determinismo, evite fazer suposições sobre a ordem das chaves de objeto ao escrever códigos que interagem com parâmetros e saídas de implantações.

Cadeias de caracteres

Cadeias de caracteres são marcadas com aspas duplas.

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

Cadeias de caracteres e objetos seguros

A cadeia de caracteres segura usa o mesmo formato que uma cadeia de caracteres e o objeto seguro usa o mesmo formato que um objeto. Quando você define um parâmetro como cadeia de caracteres segura ou objeto seguro, o valor do parâmetro não é salvo no histórico de implantação e não é registrado em log. No entanto, se você definir esse valor seguro como uma propriedade que não está esperando um valor seguro, o valor não será protegido. Por exemplo, se você definir uma cadeia de caracteres segura como marca, esse valor será armazenado como texto sem formatação. Use cadeias de caracteres seguras para senhas e segredos.

O exemplo a seguir mostra dois parâmetros seguros.

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

Observação

Não use cadeias de caracteres ou objetos seguros como valores de saída. Se você incluir um valor seguro como o valor de saída, o valor não será exibido no histórico de implantação e não poderá ser recuperado de outro modelo. Em vez disso, salve o valor seguro em um cofre de chaves e passe como um parâmetro do cofre de chaves.

Próximas etapas

Para saber mais sobre a sintaxe de modelos, confira Noções básicas de estrutura e sintaxe dos modelos do ARM.