Tipos de dados em modelos ARM

Este artigo descreve os tipos de dados suportados nos modelos do Azure Resource Manager (modelos ARM).

Tipos suportados

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

  • matriz
  • booleano
  • número inteiro
  • 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 linhas. Cada elemento é separado por uma 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 tipos diferentes.

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

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

Booleanos

Ao especificar valores booleanos, use true ou false. Não envolva o valor com aspas.

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

Números inteiros

Ao especificar valores inteiros, não use aspas.

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

Para inteiros passados como parâmetros embutidos, o intervalo de valores pode ser limitado pelo SDK ou pela ferramenta de linha de comando que você usa para implantação. Por exemplo, ao usar o PowerShell para implantar um modelo, os tipos 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 recursos aplicam seus próprios limites para propriedades inteiras.

Objetos

Os objetos começam com uma chave esquerda () e terminam com uma chave direita ({}). Cada propriedade em um objeto consiste key em e value. Os key e estão entre aspas duplas e value separados por dois pontos (:). Cada propriedade é separada por uma 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]"
        }
    }
}

Em 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 Bicep items() classifica os objetos na ordem alfabética. Em outros lugares, o pedido original pode ser preservado. Devido a esse não-determinismo, evite fazer suposições sobre a ordenação de chaves de objeto ao escrever código, que interage com parâmetros de implantação e saídas.

Cadeias

As cadeias de caracteres são marcadas com aspas duplas.

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

Proteja cadeias de caracteres e objetos

Secure string usa o mesmo formato que string, e secure object usa o mesmo formato que object. Quando você define um parâmetro para uma cadeia de caracteres ou objeto seguro, o valor do parâmetro não é salvo no histórico de implantação e não é registrado. No entanto, se você definir esse valor seguro para 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 para uma tag, 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"
  }
}

Nota

Não use cadeias de caracteres ou objetos seguros como valores de saída. Se você incluir um valor seguro como um 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óximos passos

Para saber mais sobre a sintaxe do modelo, consulte Compreender a estrutura e a sintaxe dos modelos ARM.