Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- Zie Voorwaardelijke implementatie in Bicep als u een resource voorwaardelijk wilt implementeren.
- Zie Bestaande resources in Bicep als u wilt verwijzen naar een bestaande resource.
- Zie Resourceafhankelijkheden in Bicep voor meer informatie over hoe de implementatievolgorde wordt bepaald.