Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak vytvořit a používat definice v šabloně Azure Resource Manager (šablona ARM). Definováním vlastních typů můžete tyto typy znovu použít. Definice typů lze použít pouze s verzí jazyka 2.0.
Poznámka:
Aktuální vydání rozšíření nástrojů Azure Resource Manager pro Visual Studio Code nerozpozná vylepšení ve verzi jazyka 2.0.
Návod
Doporučujeme Bicep, protože nabízí stejné možnosti jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v tématu Uživatelsky definované datové typy v aplikaci Bicep.
Minimální deklarace
Minimálně každá definice typu potřebuje název a buď a type
nebo a $ref
.
"definitions": {
"demoStringType": {
"type": "string"
},
"demoIntType": {
"type": "int"
},
"demoBoolType": {
"type": "bool"
},
"demoObjectType": {
"type": "object"
},
"demoArrayType": {
"type": "array"
}
}
Povolené hodnoty
Můžete definovat povolené hodnoty pro definici typu. Do pole zadáte povolené hodnoty. Nasazení se během ověřování nezdaří, pokud je pro definici typu předána hodnota, která není jednou z povolených hodnot.
"definitions": {
"demoEnumType": {
"type": "string",
"allowedValues": [
"one",
"two"
]
}
}
Omezení délky
Můžete určit minimální a maximální délku pro definice typů řetězců a polí. Můžete nastavit jedno nebo obě omezení. U řetězců délka označuje počet znaků. U polí určuje délka počet položek v matici.
Následující příklad deklaruje dvě definice typů. Jedna definice typu je pro název účtu úložiště, který musí mít 3 až 24 znaků. Druhou definicí typu je pole, které musí mít 1 až 5 položek.
"definitions": {
"storageAccountNameType": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"appNameType": {
"type": "array",
"minLength": 1,
"maxLength": 5
}
}
Celočíselná omezení
Můžete nastavit minimální a maximální hodnoty pro definice celočíselných typů. Můžete nastavit jedno nebo obě omezení.
"definitions": {
"monthType": {
"type": "int",
"minValue": 1,
"maxValue": 12
}
}
Omezení objektu
Vlastnosti
Hodnota je properties
mapa názvu vlastnosti => definice typu.
Následující příklad by přijal {"foo": "string", "bar": 1}
, ale odmítnout {"foo": "string", "bar": -1}
, {"foo": "", "bar": 1}
nebo jakýkoli objekt bez foo
nebo bar
vlastnost.
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
}
}
},
"parameters": {
"objectParameter": {
"$ref": "#/definitions/objectDefinition",
}
}
Všechny vlastnosti jsou vyžadovány, pokud definice typu vlastnosti nemá omezení "nullable":true . Pokud chcete, aby obě vlastnosti v předchozím příkladu byly volitelné, vypadaly by takto:
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
}
}
}
dodatečné vlastnosti
Hodnota je additionalProperties
definice typu nebo logická hodnota. Pokud není definováno žádné additionalProperties
omezení, výchozí hodnota je true
.
Pokud je hodnota definice typu, hodnota popisuje schéma, které je použito na všechny vlastnosti, které nejsou uvedeny v properties
omezení. Následující příklad by přijal {"fizz": "buzz", "foo": "bar"}
, ale odmítl {"property": 1}
.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
},
"additionalProperties": {
"type": "string"
}
}
}
Pokud je false
hodnota , nesmí být zadány žádné vlastnosti nad rámec těch, které jsou definovány properties
v omezení. Následující příklad by přijal {"foo": "string", "bar": 1}
, ale odmítnout {"foo": "string", "bar": 1, "fizz": "buzz"}
.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": false
}
}
Pokud je true
hodnota , jakákoli vlastnost, která není definována properties
v omezení přijímá libovolnou hodnotu. Následující příklad by přijal {"foo": "string", "bar": 1, "fizz": "buzz"}
.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": true
}
}
diskriminátor
Hodnota discriminator
definuje, jaké schéma se má použít na základě nediskriminační vlastnosti. Následující příklad by přijal buď {"type": "ints", "foo": 1, "bar": 2}
nebo {"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}
, ale odmítnout {"type": "ints", "fizz": "buzz"}
.
"definitions": {
"taggedUnionDefinition": {
"type": "object",
"discriminator": {
"propertyName": "type",
"mapping": {
"ints": {
"type": "object",
"additionalProperties": {"type": "int"}
},
"strings": {
"type": "object",
"additionalProperties": {"type": "string"}
}
}
}
}
}
Omezení pole
prefixItems
Hodnota je prefixItems
pole definic typů. Každá definice typu v hodnotě je schéma, které se má použít k ověření prvku pole ve stejném indexu. Následující příklad by přijal [1, true]
, ale odmítl [1, "string"]
nebo [1]
:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
]
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
položky
Hodnota je items
definice typu nebo logická hodnota. Pokud není definováno žádné items
omezení, výchozí hodnota je true
.
Pokud je hodnota definice typu, hodnota popisuje schéma použité pro všechny prvky pole, jejichž index je větší než největší index prefixItems
omezení. Následující příklad by přijal [1, true, 1]
nebo [1, true, 1, 1]
odmítl [1, true, "foo"]
:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
],
"items": { "type": "int" }
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
Můžete použít items
bez použití prefixItems
. Následující příklad by přijal [1, 2]
nebo [1]
odmítl ["foo"]
:
"definitions": {
"intArrayDefinition": {
"type": "array",
"items": { "type": "int" }
}
},
"parameters": {
"intArrayParameter": {
"$ref": "#/definitions/intArrayDefinition"
}
}
Pokud se jedná false
o hodnotu, musí být ověřená matice přesně stejná jako prefixItems
omezení. Následující příklad by přijal [1, true]
, ale odmítnout [1, true, 1]
, a [1, true, false, "foo", "bar"]
.
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": false
}
Pokud je hodnota true, prvky pole, jejichž index je větší než největší index prefixItems
omezení, přijímají libovolnou hodnotu. Následující příklady by přijímaly [1, true]
[1, true, 1]
a [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
}
Omezení s možnou hodnotou null
Omezení s možnou hodnotou null označuje, že hodnota může být null
nebo vynechána. Příklad najdete v části Vlastnosti .
Popis
Do definice typu můžete přidat popis, který uživatelům šablony pomůže pochopit hodnotu, kterou mají poskytnout.
"definitions": {
"virtualMachineSize": {
"type": "string",
"metadata": {
"description": "Must be at least Standard_A3 to support 2 NICs."
},
"defaultValue": "Standard_DS1_v2"
}
}
Definice použití
Chcete-li odkazovat na definici typu, použijte následující syntaxi:
"$ref": "#/definitions/<definition-name>"
Následující příklad ukazuje, jak odkazovat na definici typu z parametrů a výstupů:
{
"$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')]"
}
}
}
Další kroky
- Další informace o dostupných vlastnostech pro definice typů najdete v tématu Principy struktury a syntaxe šablon ARM.