Datatyper i ARM-mallar

I den här artikeln beskrivs de datatyper som stöds i Azure Resource Manager-mallar (ARM-mallar).

Typer som stöds

I en ARM-mall kan du använda följande datatyper:

  • matris
  • bool
  • heltal
  • objekt
  • secureObject
  • securestring
  • sträng

Matriser

Matriser börjar med en vänster hakparentes ([) och slutar med en höger hakparentes (]). En matris kan deklareras på en rad eller flera rader. Varje element avgränsas med ett kommatecken.

"parameters": {
  "exampleArray": {
    "type": "array",
    "defaultValue": [
      1,
      2,
      3
    ]
  }
},

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('exampleArray')]"
  },
  "firstExampleArrayElement": {
    "type": "int",
    "value": "[parameters('exampleArray')[0]]"
  }
}

Elementen i en matris kan vara av samma typ eller olika typer.

"variables": {
  "mixedArray": [
    "[resourceGroup().name]",
    1,
    true,
    "example string"
  ]
}

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('mixedArray')]"
  },
  "firstMixedArrayElement": {
    "type": "string",
    "value": "[variables('mixedArray')[0]]"
  }
}

Booleska värden

När du anger booleska värden använder du true eller false. Omge inte värdet med citattecken.

"parameters": {
  "exampleBool": {
    "type": "bool",
    "defaultValue": true
  }
},

Heltal

Använd inte citattecken när du anger heltalsvärden.

"parameters": {
  "exampleInt": {
    "type": "int",
    "defaultValue": 1
  }
}

För heltal som skickas som infogade parametrar kan intervallet med värden begränsas av det SDK eller kommandoradsverktyg som du använder för distribution. När du till exempel använder PowerShell för att distribuera en mall kan heltalstyper variera från -2147483648 till 2147483647. För att undvika den här begränsningen anger du stora heltalsvärden i en parameterfil. Resurstyper tillämpar sina egna gränser för heltalsegenskaper.

Objekt

Objekt börjar med en vänster klammerparentes ({) och slutar med en höger klammerparentes (}). Varje egenskap i ett objekt består av key och value. Och keyvalue omges av dubbla citattecken och avgränsas med ett kolon (:). Varje egenskap avgränsas med ett kommatecken.

"parameters": {
  "exampleObject": {
    "type": "object",
    "defaultValue": {
      "name": "test name",
      "id": "123-abc",
      "isCurrent": true,
      "tier": 1
    }
  }
}

Du kan hämta en egenskap från ett objekt med punkt notation.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "exampleObject": {
            "type": "object",
            "defaultValue": {
                "name": "test name",
                "id": "123-abc",
                "isCurrent": true,
                "tier": 1
            }
        }
    },
    "resources": [
    ],
    "outputs": {
        "nameFromObject": {
            "type": "string",
            "value": "[parameters('exampleObject').name]"
        }
    }
}

I JSON är ett objekt en osorterad samling med noll eller fler nyckel/värde-par. Beställningen kan variera beroende på implementeringarna. Funktionen Bicep items() sorterar till exempel objekten i alfabetisk ordning. På andra ställen kan den ursprungliga ordningen bevaras. På grund av denna icke-determinism bör du undvika att göra några antaganden om ordningen på objektnycklar när du skriver kod, som interagerar med distributionsparametrar och utdata.

Strängar

Strängar markeras med dubbla citattecken.

"parameters": {
  "exampleString": {
    "type": "string",
    "defaultValue": "test value"
  }
},

Skydda strängar och objekt

Säker sträng använder samma format som sträng, och skyddat objekt använder samma format som objektet. När du anger en parameter till en säker sträng eller ett säkert objekt sparas inte värdet för parametern i distributionshistoriken och loggas inte. Men om du ställer in det säkra värdet på en egenskap som inte förväntar sig ett säkert värde skyddas inte värdet. Om du till exempel anger en säker sträng till en tagg lagras det värdet som oformaterad text. Använd säkra strängar för lösenord och hemligheter.

I följande exempel visas två säkra parametrar.

"parameters": {
  "password": {
    "type": "securestring"
  },
  "configValues": {
    "type": "secureObject"
  }
}

Kommentar

Använd inte säkra strängar eller objekt som utdatavärden. Om du inkluderar ett säkert värde som ett utdatavärde visas inte värdet i distributionshistoriken och kan inte hämtas från en annan mall. Spara i stället det säkra värdet i ett nyckelvalv och skicka det som en parameter från nyckelvalvet.

Nästa steg

Mer information om mallsyntaxen finns i Förstå strukturen och syntaxen för ARM-mallar.