Resourcedeclaratie in Bicep

In dit artikel worden de syntaxis beschreven die u gebruikt om een resource toe te voegen aan uw Bicep-bestand. U kunt in een Bicep-bestand maximaal 800 resources gebruiken. Zie Sjabloonlimieten voor meer informatie.

Resources definiëren

Voeg een resourcedeclaratie toe met behulp van het resource trefwoord. Stel een symbolische naam in voor de resource. De symbolische naam is niet hetzelfde als de resourcenaam. Gebruik de symbolische naam om te verwijzen naar de resource in andere delen van uw Bicep-bestand.

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

Een declaratie voor een opslagaccount kan beginnen met:

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

Symbolische namen zijn hoofdlettergevoelig. Ze kunnen letters, cijfers en onderstrepingstekens (_) bevatten. Ze kunnen niet beginnen met een getal. Een resource kan niet dezelfde naam hebben als een parameter, variabele of module.

Zie Bicep resourcereferentie voor de beschikbare resourcetypen en -versies. Bicep ondersteunt apiProfile niet, wat beschikbaar is in JSON van Azure Resource Manager-sjablonen (ARM-sjablonen). U kunt ook resources van bicep-uitbreidbaarheidsproviders definiëren. Zie Bicep extensibility Kubernetes-provider voor meer informatie.

Als u een resource voorwaardelijk wilt implementeren, gebruikt u de if syntaxis. Zie Voorwaardelijke implementatie in Bicep voor meer informatie.

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

Als u meer dan één exemplaar van een resource wilt implementeren, gebruikt u de for syntaxis. U kunt de batchSize decorator gebruiken om op te geven of de exemplaren serieel of parallel worden geïmplementeerd. Zie Iteratieve lussen in Bicep voor meer informatie.

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

U kunt ook de for syntaxis van de resource-eigenschappen gebruiken om een matrix te maken.

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

Decorators gebruiken

Schrijf decorators in de indeling @expression en plaats ze boven resourcedeclaraties. In de volgende tabel worden de beschikbare decorateurs voor bronnen weergegeven.

Decorateur Argumentatie Beschrijving
batchSize Geen Stel exemplaren in om sequentieel te implementeren.
beschrijving tekenreeks Geef beschrijvingen op voor de resource.
nullIfNotFound Geen Als de resource niet bestaat, wordt het resource-symbool geëvalueerd naar null in plaats van dat de implementatie mislukt.
onlyIfNotExists Geen Implementeer de resource alleen als deze nog niet bestaat in het doelbereik.

Decorators bevinden zich in de sys-naamruimte. Als u een decorator wilt onderscheiden van een ander item met dezelfde naam, moet u de decorator vooraf laten gaan door sys. Als uw Bicep-bestand bijvoorbeeld een parameter met de naam descriptionbevat, moet u de sys-naamruimte toevoegen wanneer u de beschrijvings decorator gebruikt.

Batchgrootte

U kunt @batchSize() alleen toepassen op een resource- of moduledefinitie die gebruikmaakt van een for-expressie.

Resources worden standaard parallel geïmplementeerd. Wanneer u de batchSize(int) decorator toevoegt, implementeert u exemplaren serieel.

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

Zie Implementeren in batches voor meer informatie.

Beschrijving

Als u uitleg wilt toevoegen, voegt u een beschrijving toe aan resourcedeclaraties. Voorbeeld:

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

U kunt markdown-opgemaakte tekst gebruiken voor de beschrijvingstekst.

nullIfNotFound

Pas de @nullIfNotFound() decorator toe op bestaande resourcedeclaraties. Wanneer u verwijst naar een bestaande resource in Bicep (met behulp van het bestaande trefwoord), mislukt de ARM-implementatie als deze resource niet wordt gevonden tijdens de implementatie. Door @nullIfNotFound() toe te passen, wordt het resourcesymbool, als de resource niet bestaat, geëvalueerd als null in plaats van dat de implementatie mislukt.

@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

Wanneer een Bicep-implementatie wordt uitgevoerd, maakt Azure Resource Manager (ARM) standaard de resource als deze niet bestaat of werkt deze bij als dit wel het geval is. Als een bestaande resource eigenschappen heeft die afwijken van uw sjabloon, probeert ARM deze mogelijk bij te werken of mislukt als updates niet zijn toegestaan.

Vanaf Bicep versie v0.38.3 geeft de @onlyIfNotExists() decorator ARM opdracht om de resource alleen te maken als deze nog niet bestaat. Als ARM een resource met de resource-id vindt, wordt het maken overgeslagen en blijft de bestaande resource ongewijzigd.

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

Resourcenaam

Elke resource heeft een naam. Let bij het instellen van de resourcenaam op de regels en beperkingen voor resourcenamen.

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

Stel de naam doorgaans in op een parameter, zodat u tijdens de implementatie verschillende waarden kunt doorgeven.

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

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

Locatie van de resource

Voor veel resources is een locatie vereist. U kunt bepalen of de resource een locatie nodig heeft via IntelliSense of sjabloonreferenties. In het volgende voorbeeld wordt een locatieparameter toegevoegd die wordt gebruikt voor het opslagaccount.

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

Stel de locatie doorgaans in op een parameter, zodat u op verschillende locaties kunt implementeren.

param location string = resourceGroup().location

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

Verschillende resourcetypen worden op verschillende locaties ondersteund. Zie Producten die beschikbaar zijn per regio om de ondersteunde locaties voor een Azure-service op te halen. Gebruik Azure PowerShell of Azure CLI om de ondersteunde locaties voor een resourcetype op te halen.

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

Resourcetags

U kunt tags toepassen op een resource tijdens de implementatie. Met tags kunt u uw geïmplementeerde resources logisch organiseren. Zie ARM-sjabloontags voor voorbeelden van de verschillende manieren waarop u de tags kunt opgeven.

Beheerde identiteiten voor bronnen

Sommige resources ondersteunen beheerde identiteiten voor Azure-resources. Deze resources hebben een identiteitsobject op het hoofdniveau van de resourcedeclaratie.

U kunt door het systeem toegewezen of door de gebruiker toegewezen identiteiten gebruiken.

In het volgende voorbeeld ziet u hoe u een door het systeem toegewezen identiteit configureert voor een Azure Kubernetes Service-cluster.

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

In het volgende voorbeeld ziet u hoe u een door de gebruiker toegewezen identiteit voor een virtuele machine configureert.

param userAssignedIdentity string

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

Resourcespecifieke eigenschappen

De voorgaande eigenschappen zijn algemeen voor de meeste resourcetypen. Nadat u deze waarden hebt ingesteld, stelt u de eigenschappen in die specifiek zijn voor het resourcetype dat u implementeert.

Gebruik IntelliSense of Bicep resourcereferentie om te bepalen welke eigenschappen beschikbaar zijn en welke zijn vereist. In het volgende voorbeeld worden de resterende eigenschappen voor een opslagaccount ingesteld.

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

Volgende stappen