Megosztás a következőn keresztül:


Típusdefiníciók arm-sablonokban

Ez a cikk azt ismerteti, hogyan hozhat létre és használhat definíciókat az Azure Resource Manager-sablonban (ARM-sablon). A saját típusok definiálásával újra felhasználhatja ezeket a típusokat. A típusdefiníciók csak a languageVersion 2.0-val használhatók.

Megjegyzés

A Visual Studio Code-hoz készült Azure Resource Manager Tools bővítmény jelenlegi kiadása nem ismeri fel a languageVersion 2.0-ban végrehajtott fejlesztéseket.

Tipp

Azért javasoljuk a Bicep használatát, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információ: Felhasználó által definiált adattípusok a Bicepben.

Minimális deklaráció

Legalább minden típusdefiníciónak szüksége van egy névre és egy type vagy egy névre $ref.

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

Megengedett értékek

A típusdefiníciókhoz megadhat engedélyezett értékeket. Az engedélyezett értékeket egy tömbben adja meg. Az üzembe helyezés sikertelen az ellenőrzés során, ha a típusdefiníció olyan értéket ad át, amely nem az engedélyezett értékek egyike.

"definitions": {
  "demoEnumType": {
    "type": "string",
    "allowedValues": [
      "one",
      "two"
    ]
  }
}

Hosszkorlátozások

A sztring- és tömbtípus-definíciók minimális és maximális hosszát megadhatja. Beállíthat egy vagy mindkét kényszert. Sztringek esetén a hossz a karakterek számát jelzi. Tömbök esetén a hossz a tömb elemeinek számát jelzi.

Az alábbi példa két típusdefiníciót deklarál. Az egyik típusdefiníció egy 3–24 karakter hosszúságú tárfióknév. A másik típusdefiníció egy tömb, amely 1–5 elemből állhat.

"definitions": {
  "storageAccountNameType": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "appNameType": {
    "type": "array",
    "minLength": 1,
    "maxLength": 5
  }
}

Egész számra vonatkozó korlátozások

Az egész számtípus-definíciók minimális és maximális értékeit megadhatja. Beállíthat egy vagy mindkét kényszert.

"definitions": {
  "monthType": {
    "type": "int",
    "minValue": 1,
    "maxValue": 12
  }
}

Objektumkorlátozások

Tulajdonságok

Az érték properties a tulajdonságnév => típusdefiníció leképezése.

Az alábbi példa elfogadná {"foo": "string", "bar": 1}, de elutasítja{"foo": "string", "bar": -1}, {"foo": "", "bar": 1}vagy bármilyen objektumot vagy bar tulajdonságot nem.foo

"definitions": {
  "objectDefinition": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    }
  }
},
"parameters": {
  "objectParameter": {
    "$ref": "#/definitions/objectDefinition",
  }
}

Minden tulajdonságra szükség van, kivéve, ha a tulajdonság típusdefiníciója "nullable": igaz kényszert tartalmaz. Ha az előző példában mindkét tulajdonságot választhatóvá szeretné tenni, a következőképpen nézne ki:

"definitions": {
  "objectDefinition": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3,
        "nullable": true
      },
      "bar": {
        "type": "int",
        "minValue": 0,
        "nullable": true
      }
    }
  }
}

továbbitulajdonságok

A értéke additionalProperties típusdefiníció vagy logikai érték. Ha nincs additionalProperties megkötés meghatározva, az alapértelmezett érték a .true

Ha az érték típusdefiníció, az érték a kényszerben nem említett összes tulajdonságra alkalmazott sémát properties írja le. Az alábbi példa elfogadná {"fizz": "buzz", "foo": "bar"} , de elutasítaná {"property": 1}a következőt: .

"definitions": {
  "dictionaryDefinition": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3,
        "nullable": true
      },
      "bar": {
        "type": "int",
        "minValue": 0,
        "nullable": true
      }
    },
    "additionalProperties": {
      "type": "string"
    }
  }
}

Ha az érték , falsea kényszerben properties meghatározottakon túl nem adható meg tulajdonság. Az alábbi példa elfogadná {"foo": "string", "bar": 1}, de elutasítja {"foo": "string", "bar": 1, "fizz": "buzz"}a következőt: .

"definitions": {
  "dictionaryDefinition": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    },
    "additionalProperties": false
  }
}

Ha az érték , truea properties kényszerben nem definiált bármely tulajdonság elfogad bármilyen értéket. Az alábbi példa elfogadná a következőt {"foo": "string", "bar": 1, "fizz": "buzz"}: .

"definitions": {
  "dictionaryDefinition": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    },
    "additionalProperties": true
  }
}

diszkriminatív

Az érték discriminator határozza meg, hogy milyen sémát kell alkalmazni egy diszkriminatív tulajdonság alapján. Az alábbi példa elfogadná a {"type": "ints", "foo": 1, "bar": 2} vagy a értéket {"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}, de elutasítja a következőt {"type": "ints", "fizz": "buzz"}: .

"definitions": {
  "taggedUnionDefinition": {
    "type": "object",
    "discriminator": {
      "propertyName": "type",
      "mapping": {
        "ints": {
          "type": "object",
          "additionalProperties": {"type": "int"}
        },
        "strings": {
          "type": "object",
          "additionalProperties": {"type": "string"}
          }
      }
    }
  }
}

Tömbkötések

prefixItems

Az érték prefixItems típusdefiníciók tömbje. Az érték minden típusdefiníciója az a séma, amely egy tömb elemének ellenőrzésére szolgál ugyanabban az indexben. A következő példa elfogadná [1, true] , de elutasítja [1, "string"] vagy [1]:

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

elemek

A érték items típusdefiníció vagy logikai érték. Ha nincs items megkötés meghatározva, az alapértelmezett érték a .true

Ha az érték típusdefiníció, az érték azt a sémát írja le, amelyet a rendszer a tömb minden olyan elemére alkalmaz, amelynek indexe nagyobb, mint a prefixItems kényszer legnagyobb indexe. Az alábbi példa elfogadná [1, true, 1] vagy [1, true, 1, 1] elutasítaná [1, true, "foo"]a következőt:

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

A használata prefixItemsnélkül is használhatóitems. Az alábbi példa elfogadná [1, 2] vagy [1] elutasítaná ["foo"]a következőt:

"definitions": {
  "intArrayDefinition": {
    "type": "array",
    "items": { "type": "int" }
  }
},
"parameters": {
  "intArrayParameter": {
    "$ref": "#/definitions/intArrayDefinition"
  }
}

Ha az érték , falseaz ellenőrzött tömbnek pontosan a kényszer hosszával prefixItems megegyező hosszúságúnak kell lennie. Az alábbi példa elfogadná [1, true], de elutasítja [1, true, 1]a és [1, true, false, "foo", "bar"]a elemet.

"definitions": {
  "tupleDefinition": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  },
  "items": false
}

Ha az érték igaz, a tömb azon elemei, amelyek indexe nagyobb, mint a prefixItems kényszer legnagyobb indexe, bármilyen értéket elfogadnak. Az alábbi példák elfogadnák [1, true]a és [1, true, 1][1, true, false, "foo", "bar"]a elemet.

"definitions": {
  "tupleDefinition": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}
"definitions": {
  "tupleDefinition": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  },
  "items": true
}

nullable constraint

A null értékű kényszer azt jelzi, hogy az érték elhagyható vagy elhagyható null . Példa: Tulajdonságok .

Description

Leírást adhat hozzá egy típusdefinícióhoz, hogy segítsen a sablon felhasználóinak megérteni a megadható értéket.

"definitions": {
  "virtualMachineSize": {
    "type": "string",
    "metadata": {
      "description": "Must be at least Standard_A3 to support 2 NICs."
    },
    "defaultValue": "Standard_DS1_v2"
  }
}

Definíció használata

Típusdefinícióra a következő szintaxissal hivatkozhat:

"$ref": "#/definitions/<definition-name>"

Az alábbi példa bemutatja, hogyan hivatkozhat típusdefinícióra paraméterekből és kimenetekből:

{
  "$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')]"
    }
  }
}

Következő lépések