Ressourcendeklaration in Bicep

Dieser Artikel beschreibt die Syntax, mit der Sie eine Ressource zu Ihrer Bicep-Datei hinzufügen können. Die Anzahl der Ressourcen in einer Bicep-Datei ist auf 800 beschränkt. Weitere Informationen finden Sie unter Vorlagengrenzwerte.

Definieren von Ressourcen

Fügen Sie eine Ressourcendeklaration mit dem Schlüsselwort resource hinzu. Legen Sie einen symbolischen Namen für die Ressource fest. Der symbolische Name ist nicht mit dem Ressourcennamen identisch. Verwenden Sie den symbolischen Namen, um auf die Ressource in anderen Teilen Ihrer Bicep Datei zu verweisen.

@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Eine Deklaration für ein Speicherkonto kann beginnen mit:

resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  ...
}

Bei symbolischen Namen wird zwischen Groß- und Kleinschreibung unterschieden. Sie können Buchstaben, Zahlen und Unterstriche (_) enthalten. Sie dürfen nicht mit einer Zahl beginnen. Eine Ressource darf nicht denselben Namen wie ein Parameter, eine Variable oder ein Modul haben.

Die verfügbaren Ressourcentypen und -versionen finden Sie unter Bicep Ressourcenreferenz. Das apiProfile-Element wird von Bicep nicht unterstützt. Dieses Element ist in ARM-Vorlagen-JSON-Dateien (Azure Resource Manager) verfügbar. Sie können auch Ressourcen für Bicep-Erweiterbarkeitsanbieter definieren. Weitere Informationen finden Sie unter Bicep-Erweiterbarkeit des Kubernetes-Anbieters.

Um eine Ressource bedingt einzusetzen, verwenden Sie die Syntax if. Für weitere Informationen siehe Bedingter Einsatz in Bicep.

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

Um mehr als eine Instanz einer Ressource bereitzustellen, verwenden Sie die Syntax for. Sie können den Decorator batchSize verwenden, um anzugeben, ob die Instanzen nacheinander oder parallel bereitgestellt werden sollen. Für weitere Informationen siehe Iterative Schleifen in Bicep.

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

Sie können auch die Syntax for für die Ressourceneigenschaften verwenden, um ein Array zu erstellen.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

Verwenden von Decorator-Elementen

Schreiben Sie Dekoratoren im Format @expression, und platzieren Sie sie über Ressourcendeklarationen. In der folgenden Tabelle werden die für Ressourcen verfügbaren Decorator-Elemente gezeigt.

Dekorateur Streitpunkt BESCHREIBUNG
batchSize nichts Richten Sie Instanzen so ein, dass sie sequenziell bereitgestellt werden.
description Schnur Geben Sie Beschreibungen für die Ressource an.
nullIfNotFound nichts Wenn die Ressource nicht vorhanden ist, wird das Ressourcensymbol zu null ausgewertet, anstatt dazu zu führen, dass die Bereitstellung fehlschlägt.
onlyIfNotExists nichts Stellen Sie die Ressource nur bereit, wenn sie noch nicht im Zielbereich vorhanden ist.

Dekoratoren sind im sys Namensraum. Wenn Sie einen Dekorator von einem anderen Element mit dem gleichen Namen unterscheiden müssen, stellen Sie dem Dekorator sys voran. Zum Beispiel, wenn Ihre Bicep Datei einen Parameter mit dem Namen description enthält, müssen Sie den sys Namespace hinzufügen, wenn Sie den description Dekorator verwenden.

BatchSize

Sie können @batchSize() nur auf eine Ressourcen- oder Moduldefinition anwenden, die einen for-Ausdruck verwendet.

Standardmäßig werden Ressourcen parallel bereitgestellt. Wenn Sie den batchSize(int)Decorator hinzufügen, stellen Sie Instanzen seriell bereit.

@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
  ...
}]

Weitere Informationen finden Sie unter Bereitstellung in Batches.

BESCHREIBUNG

Um eine Erklärung hinzuzufügen, fügen Sie Ressourcendeklarationen eine Beschreibung hinzu. Beispiel:

@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
  ...
}]

Mit Markdown formatierter Text kann für den Beschreibungstext verwendet werden.

nullIfNotFound

Wenden Sie den @nullIfNotFound() Dekorateur auf vorhandene Ressourcendeklarationen an. Wenn Sie in Bicep auf eine vorhandene Ressource verweisen (mit dem vorhandenen Schlüsselwort), schlägt die ARM-Bereitstellung fehl, wenn diese Ressource zur Bereitstellungszeit nicht gefunden wird. Durch Anwenden von @nullIfNotFound() wird das Ressourcensymbol, wenn die Ressource nicht vorhanden ist, zu null ausgewertet, anstatt einen Bereitstellungsfehler auszulösen.

@nullIfNotFound()
resource centralWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
  name: 'central-log-analytics'
}

// Safe access
output workspaceId string = centralWorkspace.?id ?? ''
output workspaceExists bool = centralWorkspace != null

onlyIfNotExists

Azure Resource Manager (ARM) erstellt während einer Bicep-Bereitstellung standardmäßig die Ressource, falls sie nicht vorhanden ist, oder er aktualisiert die bereits vorhandene Ressource. Wenn eine vorhandene Ressource Eigenschaften aufweist, die sich von Ihrer Vorlage unterscheiden, versucht ARM möglicherweise, sie zu aktualisieren oder fehlschlagen, wenn Updates nicht zulässig sind.

Ab Bicep Version v0.38.3 weist der @onlyIfNotExists() Dekorateur ARM an, die Ressource nur zu erstellen, wenn sie noch nicht vorhanden ist. Wenn ARM eine Ressource mit der Ressourcen-ID findet, überspringt sie die Erstellung und lässt die vorhandene Ressource unverändert.

@onlyIfNotExists()
resource example 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'mystorageacct'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Ressourcenname

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

resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'examplestorage'
  ...
}

Legen Sie in der Regel den Namen auf einen Parameter fest, damit Sie während der Bereitstellung unterschiedliche Werte übergeben können.

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: storageAccountName
  ...
}

Ressourcenspeicherort

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

resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

Legen Sie in der Regel den Speicherort auf einen Parameter fest, damit Sie an verschiedenen Standorten bereitstellen können.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'examplestorage'
  location: location
  ...
}

An verschiedenen Speicherorten werden unterschiedliche Ressourcentypen unterstützt. Informationen zum Abrufen der unterstützten Speicherorte für einen Azure-Dienst finden Sie unter "Nach Region verfügbare Produkte". Verwenden Sie Azure PowerShell oder die Azure-Befehlszeilenschnittstelle, um die unterstützten Speicherorte für einen Ressourcentyp abzurufen.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

Ressourcentags

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.

Verwaltete Identitäten für Ressourcen

Einige Ressourcen unterstützen verwaltete Identitäten für Azure-Ressourcen. Diese Ressourcen verfügen über ein Identitätsobjekt auf der Stammebene der Ressourcendeklaration.

Sie können entweder systemseitig oder benutzerseitig zugewiesene Identitäten verwenden.

Das folgende Beispiel zeigt, wie sie eine systemseitig zugewiesene Identität für einen Azure Kubernetes Service-Cluster konfigurieren.

resource aks 'Microsoft.ContainerService/managedClusters@2025-08-02-preview' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

Im nächsten Beispiel wird gezeigt, wie Sie eine benutzerseitig zugewiesene Identität für einen virtuellen Computer konfigurieren.

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Ressourcenspezifische Eigenschaften

Die vorstehenden Eigenschaften sind für die meisten Ressourcentypen generisch. Legen Sie nach dem Festlegen dieser Werte die Eigenschaften fest, die für den ressourcentyp spezifisch sind, den Sie bereitstellen.

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

resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Nächste Schritte