Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve como criar e usar definições em seu modelo do Azure Resource Manager (modelo ARM). Ao definir seus próprios tipos, você pode reutilizá-los. As definições de tipo só podem ser usadas com languageVersion 2.0.
Sugestão
Recomendamos o Bicep porque ele oferece os mesmos recursos que os modelos ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte Tipos de dados definidos pelo usuário no Bicep.
Declaração mínima
No mínimo, cada definição de tipo precisa de um nome e de um type ou de .$ref
"definitions": {
"demoStringType": {
"type": "string"
},
"demoIntType": {
"type": "int"
},
"demoBoolType": {
"type": "bool"
},
"demoObjectType": {
"type": "object"
},
"demoArrayType": {
"type": "array"
}
}
Valores permitidos
Você pode definir valores permitidos para uma definição de tipo. Você fornece os valores permitidos em uma matriz. A implantação falhará durante a validação se um valor for passado para a definição de tipo que não seja um dos valores permitidos.
"definitions": {
"demoEnumType": {
"type": "string",
"allowedValues": [
"one",
"two"
]
}
}
Restrições de comprimento
Você pode especificar comprimentos mínimos e máximos para definições de tipo de cadeia de caracteres e matrizes. Você pode definir uma ou ambas as restrições. Para cadeias de caracteres, o comprimento indica o número de caracteres. Para matrizes, o comprimento indica o número de itens na matriz.
O exemplo a seguir declara duas definições de tipo. Uma definição de tipo é para um nome de conta de armazenamento que deve ter de 3 a 24 caracteres. A outra definição de tipo é uma matriz que deve ter de 1 a 5 itens.
"definitions": {
"storageAccountNameType": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"appNameType": {
"type": "array",
"minLength": 1,
"maxLength": 5
}
}
Restrições de números inteiros
Você pode definir valores mínimos e máximos para definições de tipo inteiro. Você pode definir uma ou ambas as restrições.
"definitions": {
"monthType": {
"type": "int",
"minValue": 1,
"maxValue": 12
}
}
Restrições de objeto
Propriedades
O valor de é um mapa de nome de propriedade =properties definição de > tipo.
O exemplo a seguir aceitaria {"foo": "string", "bar": 1}, mas rejeitaria {"foo": "string", "bar": -1}, {"foo": "", "bar": 1}ou qualquer objeto sem uma foo ou bar propriedade.
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
}
}
},
"parameters": {
"objectParameter": {
"$ref": "#/definitions/objectDefinition",
}
}
Todas as propriedades são obrigatórias, a menos que a definição do tipo da propriedade tenha a restrição "nullable": true. Para tornar ambas as propriedades no exemplo anterior opcionais, seria assim:
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
}
}
}
propriedades adicionais
O valor de é uma definição de additionalProperties tipo ou um valor booleano. Se nenhuma additionalProperties restrição for definida, o valor padrão será true.
Se value for uma definição de tipo, o valor descreverá o esquema que é aplicado a todas as propriedades não mencionadas na properties restrição. O exemplo a seguir aceitaria {"fizz": "buzz", "foo": "bar"} , mas rejeitaria {"property": 1}.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
},
"additionalProperties": {
"type": "string"
}
}
}
Se o valor for false, nenhuma propriedade além das properties definidas na restrição pode ser fornecida. O exemplo a seguir aceitaria {"foo": "string", "bar": 1}, mas rejeitaria {"foo": "string", "bar": 1, "fizz": "buzz"}.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": false
}
}
Se o valor for true, qualquer propriedade não definida na properties restrição aceita qualquer valor. O exemplo a seguir aceitaria {"foo": "string", "bar": 1, "fizz": "buzz"}.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": true
}
}
discriminador
O valor discriminator define qual esquema aplicar com base em uma propriedade discriminadora. O exemplo a seguir aceitaria ou {"type": "ints", "foo": 1, "bar": 2}{"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}, mas rejeitaria {"type": "ints", "fizz": "buzz"}.
"definitions": {
"taggedUnionDefinition": {
"type": "object",
"discriminator": {
"propertyName": "type",
"mapping": {
"ints": {
"type": "object",
"additionalProperties": {"type": "int"}
},
"strings": {
"type": "object",
"additionalProperties": {"type": "string"}
}
}
}
}
}
Restrições de matriz
prefixItems
O valor de prefixItems é uma matriz de definições de tipo. Cada definição de tipo no valor é o esquema a ser usado para validar o elemento de uma matriz no mesmo índice. O exemplo a seguir aceitaria [1, true] , mas rejeitaria [1, "string"] ou [1]:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
]
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
itens
O valor de é uma definição de items tipo ou um booleano. Se nenhuma items restrição for definida, o valor padrão será true.
Se value for uma definição de tipo, o valor descreverá o esquema que é aplicado a todos os elementos da matriz cujo índice é maior do que o maior índice da prefixItems restrição. O exemplo a seguir aceitaria [1, true, 1] ou [1, true, 1, 1] rejeitaria [1, true, "foo"]:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
],
"items": { "type": "int" }
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
Você pode usar items sem usar prefixItemso . O exemplo a seguir aceitaria [1, 2] ou [1] rejeitaria ["foo"]:
"definitions": {
"intArrayDefinition": {
"type": "array",
"items": { "type": "int" }
}
},
"parameters": {
"intArrayParameter": {
"$ref": "#/definitions/intArrayDefinition"
}
}
Se o valor for false, a matriz validada deve ter exatamente o mesmo comprimento que a prefixItems restrição. O exemplo a seguir aceitaria [1, true], mas rejeitaria [1, true, 1], e [1, true, false, "foo", "bar"].
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": false
}
Se o valor for true, os elementos da matriz cujo índice é maior do que o maior índice da prefixItems restrição aceitam qualquer valor. Os exemplos a seguir aceitariam [1, true], [1, true, 1] e [1, true, false, "foo", "bar"].
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
}
}
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": true
}
Restrição anulável
A restrição anulável indica que o valor pode ser null ou omitido. Consulte Propriedades para obter um exemplo.
Descrição
Você pode adicionar uma descrição a uma definição de tipo para ajudar os usuários do seu modelo a entender o valor a ser fornecido.
"definitions": {
"virtualMachineSize": {
"type": "string",
"metadata": {
"description": "Must be at least Standard_A3 to support 2 NICs."
},
"defaultValue": "Standard_DS1_v2"
}
}
Definição de uso
Para fazer referência a uma definição de tipo, use a seguinte sintaxe:
"$ref": "#/definitions/<definition-name>"
O exemplo a seguir mostra como fazer referência a uma definição de tipo a partir de parâmetros e saídas:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"languageVersion": "2.0",
"definitions": {
"naturalNumber": {
"type": "int",
"minValue": 1
}
},
"parameters": {
"numberParam": {
"$ref": "#/definitions/naturalNumber",
"defaultValue": 0
}
},
"resources": {},
"outputs": {
"output1": {
"$ref": "#/definitions/naturalNumber",
"value": "[parameters('numberParam')]"
}
}
}
Próximos passos
- Para saber mais sobre as propriedades disponíveis para definições de tipo, consulte Compreender a estrutura e a sintaxe dos modelos ARM.