Aracılığıyla paylaş


ARM şablonlarında tür tanımları

Bu makalede, Azure Resource Manager şablonunuzda (ARM şablonu) tanım 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.

Tavsiye

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 $refgerekir.

"definitions": {
  "demoStringType": {
    "type": "string"
  },
  "demoIntType": {
    "type": "int"
  },
  "demoBoolType": {
    "type": "bool"
  },
  "demoObjectType": {
    "type": "object"
  },
  "demoArrayType": {
    "type": "array"
  }
}

İzin verilen değerler

Bir tür tanımı için izin verilen değerler 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 fazla uzunlukları belirtebilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını gösterir. Diziler için uzunluk, dizideki öğe 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ıdır. 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

properties değerinin, özellik adı => tür tanımının bir eşlemesidir.

Aşağıdaki örnek , kabul eder, ancak , {"foo": "string", "bar": 1}veya veya özelliği olmayan herhangi bir {"foo": "string", "bar": -1}{"foo": "", "bar": 1} nesneyi reddederfoobar.

"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 geçerli": true kısıtlaması olmadıkça, 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
      }
    }
  }
}

ekÖzellikler

Değer, additionalProperties bir tür tanımı veya bir Boolean değeridir. additionalProperties Hiçbir kısıtlama tanımlanmamışsa, 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
  }
}

Ayrımcı

değeri discriminator , ayrıştırıcı özelliğine 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": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}.{"type": "ints", "fizz": "buzz"}

"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 [1, true]öğesini kabul [1, "string"] eder ancak reddeder[1]:

"definitions": {
  "tupleDefinition": {
    "type": "array",
    "prefixItems": [
      { "type": "int" },
      { "type": "bool" }
    ]
  }
},
"parameters": {
  "tupleParameter": {
    "$ref": "#/definitions/tupleDefinition"
  }
}

eşya

Değeri items bir tür tanımı veya boolean değeridir. items Hiçbir kısıtlama tanımlanmamışsa, 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 şunu 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 itemskullanabilirsinizprefixItems. Aşağıdaki örnek şunu 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, ancak ve 'yi [1, true]reddeder.[1, true, 1][1, true, false, "foo", "bar"]

"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] ve [1, true, 1]kabul [1, true, false, "foo", "bar"]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 null olabileceğini veya atlanabileceğini gösterir. Bir örnek için bkz . Özellikler .

Açıklama

Ş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ı kullan

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