Freigeben über


Ressourcendeklaration in ARM-Vorlagen

Um eine Ressource über eine Azure Resource Manager-Vorlage (ARM-Vorlage) bereitzustellen, fügen Sie eine Ressourcendeklaration hinzu. Verwenden Sie das resources Array in einer JSON-Vorlage.

languageVersion 2.0 erstellt eine Liste der Verbesserungen an ARM-JSON-Vorlagen, z. B. das Ändern der Ressourcendeklaration von einem Array in ein Objekt. Die meisten der in diesem Artikel gezeigten Beispiele verwenden weiterhin ein resources-Array. Spezifische Informationen zu languageVersion 2.0 finden Sie unter Verwenden eines symbolischen Namens.

Tipp

Wir empfehlen Bicep, weil es dieselben Funktionen wie ARM-Vorlagen bietet und die Syntax einfacher zu verwenden ist. Weitere Informationen finden Sie unter Ressourcendeklaration.

Sie sind auf 800 Ressourcen in einer Vorlage beschränkt. Weitere Informationen finden Sie unter Vorlagenbeschränkungen.

Festlegen des Ressourcentyps und der Version

Wenn Sie Ihrer Vorlage eine Ressource hinzufügen, legen Sie zunächst den Ressourcentyp und die API-Version fest. Diese Werte bestimmen die anderen Eigenschaften, die für die Ressource verfügbar sind.

Das folgende Beispiel zeigt, wie Sie den Ressourcentyp und die API-Version für ein Speicherkonto festlegen. Im Beispiel wird die vollständige Ressourcendeklaration nicht angezeigt.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2025-06-01",
    ...
  }
]

Ressourcenname festlegen

Jede Ressource besitzt einen Namen. Achten Sie beim Festlegen des Ressourcennamens auf die Regeln und Einschränkungen für Ressourcennamen.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2025-06-01",
    "name": "[parameters('storageAccountName')]",
    ...
  }
]

Festlegen des Speicherorts

Viele Ressourcen erfordern einen Speicherort. Sie können mittels IntelliSense oder über eine Vorlagenreferenz ermitteln, ob die Ressource einen Speicherort benötigt. Im folgenden Beispiel wird ein Speicherortparameter hinzugefügt, der für das Speicherkonto verwendet wird.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2025-06-01",
    "name": "[parameters('storageAccountName')]",
    "location": "[parameters('location')]",
    ...
  }
]

Weitere Informationen finden Sie unter Festlegen des Ressourcenspeicherorts in einer ARM-Vorlage.

Festlegen von Tags

Sie können während der Bereitstellung Tags auf eine Ressource anwenden. Tags helfen Ihnen dabei, Ihre bereitgestellten Ressourcen logisch zu organisieren. Beispiele für die verschiedenen Methoden zum Angeben der Tags finden Sie unter ARM-Vorlagen-Tags.

Festlegen ressourcenspezifischer Eigenschaften

Die vorstehenden Eigenschaften sind für die meisten Ressourcentypen generisch. Nachdem Sie diese Werte festgelegt haben, müssen Sie die Eigenschaften festlegen, die für den Ressourcentyp, den Sie bereitstellen, spezifisch sind.

Verwenden Sie IntelliSense oder Vorlagenverweis , um zu bestimmen, welche Eigenschaften verfügbar sind und welche erforderlich sind. Im folgenden Beispiel werden die restlichen Eigenschaften für ein Speicherkonto festgelegt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    }
  ]
}

Symbolischen Namen verwenden

In Bicep weist jede Ressourcendefinition einen symbolischen Namen auf. Der symbolische Name wird verwendet, um auf die Ressource aus den anderen Teilen Ihrer Bicep-Datei zu verweisen. Um einen symbolischen Namen in ARM-JSON-Vorlagen zu unterstützen, fügen Sie languageVersion mit der Version 2.0 hinzu, und ändern Sie die Ressourcendefinition von einem Array in ein Objekt. Wenn languageVersion für eine Vorlage angegeben wird, muss der symbolische Name für Ressourcen auf Stammebene angegeben werden. Beispiel:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  ]
}

Der vorherige JSON-Code kann in den folgenden JSON-Code geschrieben werden:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "aks": {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  }
}

Bei symbolischen Namen wird zwischen Groß- und Kleinschreibung unterschieden. Die zulässigen Zeichen für symbolische Namen sind Buchstaben, Zahlen und _. Symbolische Namen müssen in einer Vorlage eindeutig sein, können aber mit Variablennamen, Parameternamen und Ausgabenamen in einer Vorlage überlappen. Im folgenden Beispiel hat der symbolische Name der Speicherkonto Ressource denselben Namen wie der Ausgabewert.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": {
    "myStorage": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    }
  },
  "outputs": {
    "myStorage":{
      "type": "object",
      "value": "[reference('myStorage')]"
    }
  }
}

Die Referenzfunktion kann den symbolischen Namen einer Ressource verwenden, wie im vorherigen Beispiel gezeigt. Die Referenzfunktion kann beispielsweise den Namen einer Ressource nicht mehr verwenden, reference(parameters('storageAccountName')) ist nicht zulässig.

Wenn die Bereitstellungsressource in einer Bereitstellung mit symbolischem Namen verwendet wird, verwenden Sie apiVersion 2020-09-01 oder höher.

Deklarieren vorhandener Ressourcen

Mit languageVersion 2.0 dem symbolischen Namen für die Ressourcendeklaration können Sie vorhandene Ressourcen deklarieren. Eine Eigenschaft "existing": true einer Ressource auf oberster Ebene führt dazu, dass ARM die Ressource ausliest, anstatt sie bereitzustellen, wie das folgende Beispiel zeigt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "languageVersion": "2.0",

  "resources": {
    "storageAccount": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "storageacct",
      "existing": true
    }
  },
  "outputs": {
    "saBlocksPlaintext": {
      "type": "bool",
      "value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
    }
  }
}

Vorhandene Ressourcen brauchen keine anderen Eigenschaften als type, apiVersion, und name.

Nächste Schritte