ARM şablonlarında tür tanımları
Bu makalede, Azure Resource Manager şablonunuzda (ARM şablonu) tanımları oluşturma ve kullanma işlemleri açıklanır. Kendi türlerinizi tanımlayarak bu türleri yeniden kullanabilirsiniz. Tür tanımları yalnızca languageVersion 2.0 ile kullanılabilir.
Not
Visual Studio Code için Azure Resource Manager Araçları uzantısının geçerli sürümü languageVersion 2.0'da yapılan iyileştirmeleri tanımıyor.
İpucu
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz. Bicep'te kullanıcı tanımlı veri türleri.
En az bildirim
En azından, her tür tanımı için bir ad ve bir type
veya $ref
gerekir.
"definitions": {
"demoStringType": {
"type": "string"
},
"demoIntType": {
"type": "int"
},
"demoBoolType": {
"type": "bool"
},
"demoObjectType": {
"type": "object"
},
"demoArrayType": {
"type": "array"
}
}
İzin verilen değerler
Tür tanımı için izin verilen değerleri tanımlayabilirsiniz. Bir dizide izin verilen değerleri sağlarsınız. İzin verilen değerlerden biri olmayan tür tanımı için bir değer geçirilirse dağıtım doğrulama sırasında başarısız olur.
"definitions": {
"demoEnumType": {
"type": "string",
"allowedValues": [
"one",
"two"
]
}
}
Uzunluk kısıtlamaları
Dize ve dizi türü tanımları için en düşük ve en yüksek uzunlukları belirtebilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını gösterir. Diziler için uzunluk, dizideki öğelerin sayısını gösterir.
Aşağıdaki örnekte iki tür tanımı bildirmektedir. Bir tür tanımı, 3-24 karakter uzunluğunda olması gereken bir depolama hesabı adı içindir. Diğer tür tanımı, 1-5 öğeden olması gereken bir dizidir.
"definitions": {
"storageAccountNameType": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"appNameType": {
"type": "array",
"minLength": 1,
"maxLength": 5
}
}
Tamsayı kısıtlamaları
Tamsayı türü tanımları için en düşük ve en yüksek değerleri ayarlayabilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz.
"definitions": {
"monthType": {
"type": "int",
"minValue": 1,
"maxValue": 12
}
}
Nesne kısıtlamaları
Özellikler
değeri properties
, özellik adı => tür tanımının eşlemesidir.
Aşağıdaki örnek , kabul eder, ancak , {"foo": "", "bar": 1}
veya veya özelliği olmayan herhangi bir bar
foo
nesneyi reddeder{"foo": "string", "bar": 1}
{"foo": "string", "bar": -1}
.
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
}
}
},
"parameters": {
"objectParameter": {
"$ref": "#/definitions/objectDefinition",
}
}
Özelliğin tür tanımında "null atanabilir": true kısıtlaması olmadığı sürece tüm özellikler gereklidir. Yukarıdaki örnekteki her iki özelliği de isteğe bağlı hale getirmek için şöyle görünür:
"definitions": {
"objectDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
}
}
}
additionalProperties
değeri additionalProperties
bir tür tanımı veya boole değeridir.
additionalProperties
Hiçbir kısıtlama tanımlanmadıysa, varsayılan değer olurtrue
.
Değer bir tür tanımıysa, değer kısıtlamada belirtilmeyen tüm özelliklere uygulanan şemayı properties
açıklar. Aşağıdaki örnek kabul {"fizz": "buzz", "foo": "bar"}
eder ancak reddeder {"property": 1}
.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3,
"nullable": true
},
"bar": {
"type": "int",
"minValue": 0,
"nullable": true
}
},
"additionalProperties": {
"type": "string"
}
}
}
Değer ise false
, kısıtlamada properties
tanımlananların ötesinde hiçbir özellik sağlanamaz. Aşağıdaki örnek kabul eder {"foo": "string", "bar": 1}
, ancak reddeder {"foo": "string", "bar": 1, "fizz": "buzz"}
.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": false
}
}
Değer ise true
, kısıtlamada tanımlanmayan properties
herhangi bir özellik herhangi bir değeri kabul eder. Aşağıdaki örnek kabul {"foo": "string", "bar": 1, "fizz": "buzz"}
eder.
"definitions": {
"dictionaryDefinition": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"minLength": 3
},
"bar": {
"type": "int",
"minValue": 0
}
},
"additionalProperties": true
}
}
Discriminator
değeri discriminator
, ayrımcı özelliğe göre hangi şemanın uygulanacağını tanımlar. Aşağıdaki örnek veya kabul eder{"type": "ints", "foo": 1, "bar": 2}
, ancak reddeder{"type": "ints", "fizz": "buzz"}
.{"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}
"definitions": {
"taggedUnionDefinition": {
"type": "object",
"discriminator": {
"propertyName": "type",
"mapping": {
"ints": {
"type": "object",
"additionalProperties": {"type": "int"}
},
"strings": {
"type": "object",
"additionalProperties": {"type": "string"}
}
}
}
}
}
Dizi kısıtlamaları
prefixItems
değeri prefixItems
, tür tanımlarından oluşan bir dizidir. Değerdeki her tür tanımı, aynı dizindeki bir dizinin öğesini doğrulamak için kullanılacak şemadır. Aşağıdaki örnek veya öğesini kabul [1, true]
eder ancak reddeder [1, "string"]
[1]
:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
]
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
öğe
değeri items
bir tür tanımı veya boole değeridir.
items
Hiçbir kısıtlama tanımlanmadıysa, varsayılan değer olurtrue
.
Değer bir tür tanımıysa, dizin kısıtlamanın en büyük dizininden prefixItems
büyük olan dizinin tüm öğelerine uygulanan şemayı açıklar. Aşağıdaki örnek kabul [1, true, 1]
eder veya [1, true, 1, 1]
reddeder [1, true, "foo"]
:
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{ "type": "int" },
{ "type": "bool" }
],
"items": { "type": "int" }
}
},
"parameters": {
"tupleParameter": {
"$ref": "#/definitions/tupleDefinition"
}
}
kullanmadan prefixItems
kullanabilirsinizitems
. Aşağıdaki örnek kabul [1, 2]
eder veya [1]
reddeder ["foo"]
:
"definitions": {
"intArrayDefinition": {
"type": "array",
"items": { "type": "int" }
}
},
"parameters": {
"intArrayParameter": {
"$ref": "#/definitions/intArrayDefinition"
}
}
Değer ise false
, doğrulanan dizi kısıtlamayla tam olarak aynı uzunlukta prefixItems
olmalıdır. Aşağıdaki örnek kabul eder[1, true]
, ancak ve [1, true, false, "foo", "bar"]
'yi reddeder[1, true, 1]
.
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": false
}
Değer true ise, dizini kısıtlamanın en büyük dizininden prefixItems
büyük olan dizinin öğeleri herhangi bir değeri kabul eder. Aşağıdaki örneklerde , [1, true, 1]
ve [1, true, false, "foo", "bar"]
kabul [1, true]
edilebilir.
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
}
}
"definitions": {
"tupleDefinition": {
"type": "array",
"prefixItems": [
{"type": "int"},
{"type": "bool"}
]
},
"items": true
}
null atanabilir kısıtlama
Null atanabilir kısıtlama, değerin atlanmış veya atlanmış olabileceğini null
gösterir. Örnek için bkz . Özellikler .
Description
Şablonunuzun kullanıcılarının sağlayabilecekleri değeri anlamasına yardımcı olmak için tür tanımına açıklama ekleyebilirsiniz.
"definitions": {
"virtualMachineSize": {
"type": "string",
"metadata": {
"description": "Must be at least Standard_A3 to support 2 NICs."
},
"defaultValue": "Standard_DS1_v2"
}
}
Tanımı kullanma
Tür tanımına başvurmak için aşağıdaki söz dizimini kullanın:
"$ref": "#/definitions/<definition-name>"
Aşağıdaki örnekte, parametrelerden ve çıkışlardan tür tanımına başvurma gösterilmektedir:
{
"$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')]"
}
}
}
Sonraki adımlar
- Tür tanımlarının kullanılabilir özellikleri hakkında bilgi edinmek için bkz. ARM şablonlarının yapısını ve söz dizimini anlama.