Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u definities maakt en gebruikt in uw ARM-sjabloon (Azure Resource Manager). Door uw eigen typen te definiëren, kunt u deze typen opnieuw gebruiken. Typedefinities kunnen alleen worden gebruikt met languageVersion 2.0.
Aanbeveling
We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis gemakkelijker te gebruiken is. Zie Door de gebruiker gedefinieerde gegevenstypen in Bicep voor meer informatie.
Minimale declaratie
Ten minste heeft elke typedefinitie een naam en een type of een $ref.
"definitions": {
"demoStringType": {
"type": "string"
},
"demoIntType": {
"type": "int"
},
"demoBoolType": {
"type": "bool"
},
"demoObjectType": {
"type": "object"
},
"demoArrayType": {
"type": "array"
}
}
Toegestane waarden
U kunt toegestane waarden definiëren voor een typedefinitie. U geeft de toegestane waarden op in een matrix. De implementatie mislukt tijdens de validatie als een waarde wordt doorgegeven voor de typedefinitie die geen van de toegestane waarden is.
"definitions": {
"demoEnumType": {
"type": "string",
"allowedValues": [
"one",
"two"
]
}
}
Lengtebeperkingen
U kunt minimum- en maximumlengten opgeven voor definities van tekenreeks- en matrixtypen. U kunt een of beide beperkingen instellen. Voor tekenreeksen geeft de lengte het aantal tekens aan. Voor matrices geeft de lengte het aantal items in de matrix aan.
In het volgende voorbeeld worden twee type definities gedeclareerd. Een type definitie is voor een opslagaccountnaam die 3-24 tekens moet hebben. De andere typedefinitie is een matrix die uit 1-5 items moet bestaan.
"definitions": {
"storageAccountNameType": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"appNameType": {
"type": "array",
"minLength": 1,
"maxLength": 5
}
}
Beperkingen voor gehele getallen
U kunt minimum- en maximumwaarden instellen voor definities van gehele getallen. U kunt een of beide beperkingen instellen.
"definitions": {
"monthType": {
"type": "int",
"minValue": 1,
"maxValue": 12
}
}
Objectbeperkingen
Eigenschappen
De waarde van properties is een koppeling van eigenschapsnaam => typedefinitie.
In het volgende voorbeeld wordt geaccepteerd {"foo": "string", "bar": 1}, maar geweigerd {"foo": "string", "bar": -1}, {"foo": "", "bar": 1}of een object zonder een foo of bar eigenschap.
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
}
}
},
"parameters": {
"objectParameter": {
"$ref": "#/definitions/objectDefinition",
}
}
Alle eigenschappen zijn vereist, tenzij de typedefinitie van de eigenschap de 'nullable' heeft: true constraint. Als u beide eigenschappen in het voorgaande voorbeeld optioneel wilt maken, ziet dit er als volgt uit:
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
}
}
}
extra eigenschappen
De waarde van additionalProperties is een typedefinitie of een Booleaanse waarde. Als er geen additionalProperties beperking is gedefinieerd, is truede standaardwaarde .
Als waarde een typedefinitie is, beschrijft de waarde het schema dat wordt toegepast op alle eigenschappen die niet in de properties beperking worden vermeld. In het volgende voorbeeld wordt geaccepteerd {"fizz": "buzz", "foo": "bar"} maar geweigerd {"property": 1}.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
},
"additionalProperties": {
"type": "string"
}
}
}
Als de waarde is false, kunnen er geen eigenschappen worden opgegeven buiten de eigenschappen die in de properties beperking zijn gedefinieerd. In het volgende voorbeeld wordt geaccepteerd {"foo": "string", "bar": 1}, maar geweigerd {"foo": "string", "bar": 1, "fizz": "buzz"}.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": false
}
}
Als de waarde is true, accepteert een eigenschap die niet is gedefinieerd in de properties beperking een waarde. In het volgende voorbeeld wordt geaccepteerd {"foo": "string", "bar": 1, "fizz": "buzz"}.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": true
}
}
onderscheidingsfactor
De waarde discriminator definieert welk schema moet worden toegepast op basis van een discriminator-eigenschap. In het volgende voorbeeld wordt geaccepteerd {"type": "ints", "foo": 1, "bar": 2} of {"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}, maar geweigerd {"type": "ints", "fizz": "buzz"}.
"definitions": {
"taggedUnionDefinition": {
"type": "object",
"discriminator": {
"propertyName": "type",
"mapping": {
"ints": {
"type": "object",
"additionalProperties": {"type": "int"}
},
"strings": {
"type": "object",
"additionalProperties": {"type": "string"}
}
}
}
}
}
Matrixbeperkingen
voorvoegselitems
De waarde van prefixItems is een array van typedefinities. Elke typedefinitie in de waarde is het schema dat moet worden gebruikt om het element van een matrix in dezelfde index te valideren. In het volgende voorbeeld wordt geaccepteerd [1, true] , maar geweigerd [1, "string"] of [1]:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
]
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
Items
De waarde van items is een typedefinitie of een Booleaanse waarde. Als er geen items beperking is gedefinieerd, is truede standaardwaarde .
Als waarde een typedefinitie is, beschrijft de waarde het schema dat wordt toegepast op alle elementen van de matrix waarvan de index groter is dan de grootste index van de prefixItems beperking. In het volgende voorbeeld wordt geaccepteerd [1, true, 1] of [1, true, 1, 1] geweigerd [1, true, "foo"]:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
],
"items": { "type": "int" }
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
U kunt dit gebruiken items zonder gebruik te maken prefixItemsvan . In het volgende voorbeeld wordt geaccepteerd [1, 2] of [1] geweigerd ["foo"]:
"definitions": {
"intArrayDefinition": {
"type": "array",
"items": { "type": "int" }
}
},
"parameters": {
"intArrayParameter": {
"$ref": "#/definitions/intArrayDefinition"
}
}
Als de waarde is false, moet de gevalideerde matrix exact dezelfde lengte hebben als de prefixItems beperking. In het volgende voorbeeld zou worden geaccepteerd [1, true], maar geweigerd [1, true, 1]en [1, true, false, "foo", "bar"].
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": false
}
Als de waarde waar is, accepteren elementen van de matrix waarvan de index groter is dan de grootste index van de prefixItems beperking een willekeurige waarde. De volgende voorbeelden accepteren [1, true], [1, true, 1] en [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
}
nulbare voorwaarde
De nullable-constraint geeft aan dat de waarde null kan zijn of kan worden weggelaten. Zie Eigenschappen voor een voorbeeld.
Beschrijving
U kunt een beschrijving toevoegen aan een typedefinitie om gebruikers van uw sjabloon inzicht te geven in de waarde die u moet opgeven.
"definitions": {
"virtualMachineSize": {
"type": "string",
"metadata": {
"description": "Must be at least Standard_A3 to support 2 NICs."
},
"defaultValue": "Standard_DS1_v2"
}
}
Definitie gebruiken
Gebruik de volgende syntaxis om te verwijzen naar een typedefinitie:
"$ref": "#/definitions/<definition-name>"
In het volgende voorbeeld ziet u hoe u naar een typedefinitie verwijst op basis van parameters en uitvoer:
{
"$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')]"
}
}
}
Volgende stappen
- Zie De structuur en syntaxis van ARM-sjablonen voor meer informatie over de beschikbare eigenschappen voor typedefinities.