Parametrar i ARM-mallar

Den här artikeln beskriver hur du definierar och använder parametrar i din Azure Resource Manager-mall (ARM-mall). Genom att ange olika värden för parametrar kan du återanvända en mall för olika miljöer.

Resource Manager löser parametervärden innan distributionsoperationerna startas. Oavsett var parametern används i mallen ersätter Resource Manager den med det lösta värdet.

Varje parameter måste anges till en av datatyperna.

Förutom minValue, maxValue, minLength, maxLength och allowedValues introducerar languageVersion 2.0 vissa verifieringsbegränsningar av aggregerad typ som ska användas i definitioner, parametrar och definitioner för utdata. Dessa begränsningar omfattar:

Tips

Vi rekommenderar Bicep eftersom det erbjuder samma funktioner som ARM-mallar och syntaxen är enklare att använda. Mer information finns i parametrar.

Du kan ha högst 256 parametrar i en mall. Mer information finns i Mallgränser.

Metodtips för parametrar finns i Parametrar.

Minimal deklaration

Varje parameter behöver minst ett namn och en typ.

När du distribuerar en mall via Azure Portal omvandlas camelCase-formaterade parameternamn till blankstegsavgränsade namn. Till exempel visas demoString i följande exempel som Demo String. Mer information finns i Använd distributionsknappen för att distribuera mallar från GitHub-repository och Distribuera resurser med ARM-mallar och Azure Portal.

"parameters": {
  "demoString": {
    "type": "string"
  },
  "demoInt": {
    "type": "int"
  },
  "demoBool": {
    "type": "bool"
  },
  "demoObject": {
    "type": "object"
  },
  "demoArray": {
    "type": "array"
  }
}

Säkra parametrar

Du kan markera sträng- eller objektparametrar som säkra. Värdet för en säker parameter sparas inte i distributionshistoriken och loggas inte.

Maskering gäller själva det säkra värdet. Det är inte garanterat att gälla ett värde som en mall transformerar eller härleder från det säkra värdet, såsom en omvänd sträng, delsträng, omkodat värde eller sammankopplat värde. Undvik att placera hemligheter i uttryck som transformerar dem när resultatet kan dyka upp i ett felmeddelande.

Säkra parametrar minskar risken att avslöja hemligheter, men de innebär inte att varje värde som härleds från en hemlighet är säkert att avslöja. Inkludera inte hemligheter i resursnamn, konfigurationssträngar där fel lätt uppstår, utdata, taggar eller andra värden som kan returneras av en resursleverantör. När du felsöker en misslyckad distribution, behandla felmeddelanden som potentiellt känsliga och granska dem innan du delar dem.

"parameters": {
  "demoPassword": {
    "type": "secureString"
  },
  "demoSecretObject": {
    "type": "secureObject"
  }
}

Tillåtna värden

Du kan definiera tillåtna värden för en parameter. Du anger de tillåtna värdena i en array. Distributionsprocessen misslyckas under valideringen om ett värde skickas in för parametern som inte är ett av de tillåtna värdena.

"parameters": {
  "demoEnum": {
    "type": "string",
    "allowedValues": [
      "one",
      "two"
    ]
  }
}

Standardvärde

Du kan ange ett standardvärde för en parameter. Standardvärdet används när ett värde inte anges under driftsättningen.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso"
  }
}

Om du vill ange ett standardvärde tillsammans med andra egenskaper för parametern använder du följande syntax.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso",
    "allowedValues": [
      "Contoso",
      "Fabrikam"
    ]
  }
}

Du kan använda uttryck med standardvärdet. Du kan inte använda referensfunktionen eller någon av listfunktionerna i parameteravsnittet. Dessa funktioner hämtar körningstillståndet för en resurs och kan inte köras före distributionen när parametrarna har lösts.

Uttryck tillåts inte med andra parameteregenskaper.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
}

Du kan använda ett annat parametervärde för att skapa ett standardvärde. Följande mall konstruerar ett namn på värdplan från platsnamnet.

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]"
  }
}

Du kan dock inte referera till en variabel som standardvärde.

Längdbegränsningar

Du kan ange minsta och högsta längd för sträng- och arrayparametrar. Du kan ange en eller båda begränsningarna. För strängar anger längden antalet tecken. För arrayer anger längden antalet objekt i arrayen.

I följande exempel deklareras två parametrar. En parameter är för ett lagringskontonamn som måste innehålla 3–24 tecken. Den andra parametern är en array som måste ha mellan 1 och 5 objekt.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "appNames": {
    "type": "array",
    "minLength": 1,
    "maxLength": 5
  }
}

Heltalsbegränsningar

Du kan ange lägsta och högsta värden för heltalsparametrar. Du kan ange en eller båda begränsningarna.

"parameters": {
  "month": {
    "type": "int",
    "minValue": 1,
    "maxValue": 12
  }
}

Objektbegränsningar

Objektbegränsningarna tillåts endast för objekt och kan endast användas med languageVersion 2.0.

Egenskaper

Värdet för properties är en karta över egenskapsnamn =>typdefinition.

Följande exempel skulle acceptera {"foo": "string", "bar": 1}, men avvisa {"foo": "string", "bar": -1}, {"foo": "", "bar": 1} eller något objekt utan egenskapen foo eller bar.

"parameters": {
  "objectParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    }
  }
}

Alla egenskaper krävs om inte egenskapens typdefinition har villkoret "nullable": true . Om du vill göra båda egenskaperna i föregående exempel valfria skulle det se ut så här:

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

ytterligare egenskaper

Värdet för additionalProperties är en typdefinition eller ett booleskt värde. Om ingen additionalProperties begränsning har definierats är truestandardvärdet .

Om värdet är en typdefinition beskriver värdet schemat som tillämpas på alla egenskaper som inte nämns i villkoret properties . Följande exempel skulle acceptera {"fizz": "buzz", "foo": "bar"} men avvisa {"property": 1}.

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

Om värdet är falsekan inga egenskaper utöver de som definierats i villkoret properties anges. Följande exempel skulle acceptera {"foo": "string", "bar": 1}, men avvisa {"foo": "string", "bar": 1, "fizz": "buzz"}.

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

Om värdet är trueaccepterar alla egenskaper som inte definierats i villkoret properties något värde. Följande exempel skulle acceptera {"foo": "string", "bar": 1, "fizz": "buzz"}.

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

diskriminator

Värdet discriminator definierar vilket schema som ska tillämpas baserat på en diskriminatoregenskap. Följande exempel skulle acceptera antingen {"type": "ints", "foo": 1, "bar": 2} eller {"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}, men avvisa {"type": "ints", "fizz": "buzz"}.

"parameters": {
  "taggedUnionParameter": {
    "type": "object",
    "discriminator": {
      "propertyName": "type",
      "mapping": {
        "ints": {
          "type": "object",
          "additionalProperties": {"type": "int"}
        },
        "strings": {
          "type": "object",
          "additionalProperties": {"type": "string"}
          }
      }
    }
  }
}

Arraybegränsningar

Array-begränsningarna tillåts endast för matriser och kan endast användas med languageVersion 2.0.

prefixItems

Värdet för prefixItems är en array av typdefinitioner. Varje typdefinition i värdet är det schema som ska användas för att verifiera elementet i en matris på motsvarande index. Följande exempel skulle acceptera [1, true] men avvisa [1, "string"] eller [1]:

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}

poster

Värdet för items är en typdefinition eller ett booleskt värde. Om ingen items begränsning har definierats är truestandardvärdet .

Om värdet är en typdefinition beskriver värdet schemat som tillämpas på alla element i arrayen vars index är större än villkorets prefixItems största index. Följande exempel skulle acceptera [1, true, 1] eller [1, true, 1, 1] men avvisa [1, true, "foo"]:

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      { "type": "int" },
      { "type": "bool" }
    ],
    "items": { "type": "int" },
    "defaultValue": [1, true, "foo"]
  }
}

Du kan använda items utan att använda prefixItems. Följande exempel skulle acceptera [1, 2] eller [1] men avvisa ["foo"]:

"parameters": {
  "intArrayParameter": {
    "type": "array",
    "items": {"type": "int"}
  }
}

Om värdet är false måste den verifierade arrayen vara exakt lika lång som prefixItems-villkoret. Följande exempel skulle acceptera [1, true], men avvisa [1, true, 1], och [1, true, false, "foo", "bar"].

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ],
    "items": false
  }
}

Om värdet är sant accepterar element i arrayen vars index är större än det största indexet för villkoret prefixItems vilket värde som helst. Följande exempel godtar [1, true], [1, true, 1] och [1, true, false, "foo", "bar"].

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}
"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  },
  "items": true
}

nullbar begränsning

Nullable-villkoret kan endast användas med languageVersion 2.0. Det anger att värdet kan vara null eller utelämnas. Se Egenskaper för ett exempel.

Beskrivning

Du kan lägga till en beskrivning till en parameter som hjälper användare av mallen att förstå värdet som ska anges. När du distribuerar mallen via portalen används den text som du anger i beskrivningen automatiskt som ett tips för den parametern. Lägg bara till en beskrivning när texten innehåller mer information än vad som kan härledas från parameternamnet.

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

Använd parameter

Om du vill referera till en parameters värde använder du parameters. I följande exempel används ett parametervärde för ett Key Vault-namn.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vaultName": {
      "type": "string",
      "defaultValue": "[format('keyVault{0}', uniqueString(resourceGroup().id))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2025-05-01",
      "name": "[parameters('vaultName')]",
      ...
    }
  ]
}

Objekt som parametrar

Du kan ordna relaterade värden genom att skicka in dem som ett objekt. Den här metoden minskar också antalet parametrar i mallen.

I följande exempel visas en parameter som är ett objekt. Standardvärdet visar de förväntade egenskaperna för objektet. Dessa egenskaper används när du definierar resursen som ska distribueras.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vNetSettings": {
      "type": "object",
      "defaultValue": {
        "name": "VNet1",
        "location": "eastus",
        "addressPrefixes": [
          {
            "name": "firstPrefix",
            "addressPrefix": "10.0.0.0/22"
          }
        ],
        "subnets": [
          {
            "name": "firstSubnet",
            "addressPrefix": "10.0.0.0/24"
          },
          {
            "name": "secondSubnet",
            "addressPrefix": "10.0.1.0/24"
          }
        ]
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2025-01-01",
      "name": "[parameters('vNetSettings').name]",
      "location": "[parameters('vNetSettings').location]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vNetSettings').addressPrefixes[0].addressPrefix]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('vNetSettings').subnets[0].name]",
            "properties": {
              "addressPrefix": "[parameters('vNetSettings').subnets[0].addressPrefix]"
            }
          },
          {
            "name": "[parameters('vNetSettings').subnets[1].name]",
            "properties": {
              "addressPrefix": "[parameters('vNetSettings').subnets[1].addressPrefix]"
            }
          }
        ]
      }
    }
  ]
}

Exempelmallar

I följande exempel visas scenarier för att använda parametrar.

Mall Beskrivning
parametrar med funktioner för standardvärden Visar hur du använder mallfunktioner när du definierar standardvärden för parametrar. Mallen driftsätter inga resurser. Den konstruerar parametervärden och returnerar dessa värden.
parameterobjekt Visar hur du använder ett objekt som parameter. Mallen distribuerar inte några resurser. Den konstruerar parametervärden och returnerar dessa värden.

Nästa steg