Dela via


Resursdeklaration i Bicep

I den här artikeln beskrivs den syntax som du använder för att lägga till en resurs i Bicep-filen. Du är begränsad till 800 resurser i en Bicep-fil. Mer information finns i Mallgränser.

Definiera resurser

Lägg till en resursdeklaration med hjälp av nyckelordet resource . Du anger ett symboliskt namn för resursen. Det symboliska namnet är inte samma som resursnamnet. Du använder det symboliska namnet för att referera till resursen i andra delar av Bicep-filen.

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

En deklaration för ett lagringskonto kan därför börja med:

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  ...
}

Symboliska namn är skiftlägeskänsliga. De kan innehålla bokstäver, siffror och understreck (_). De kan inte börja med ett tal. En resurs kan inte ha samma namn som en parameter, variabel eller modul.

Information om tillgängliga resurstyper och versioner finns i Bicep-resursreferens. Bicep stöder apiProfileinte , som är tillgängligt i Azure Resource Manager-mallar (ARM-mallar) JSON. Du kan också definiera utökningsproviderresurser för Bicep. Mer information finns i Kubernetes-providern Bicep-utökningsbarhet.

Om du vill distribuera en resurs villkorligt använder du syntaxen if . Mer information finns i Villkorsstyrd distribution i Bicep.

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

Om du vill distribuera mer än en instans av en resurs använder du syntaxen for . Du kan använda dekoratören batchSize för att ange om instanserna ska distribueras seriellt eller parallellt. Mer information finns i Iterativa loopar i Bicep.

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

Du kan också använda syntaxen for för resursegenskaperna för att skapa en matris.

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

Använda dekoratörer

Dekoratörer är skrivna i formatet @expression och placeras ovanför resursdeklarationer. I följande tabell visas tillgängliga dekoratörer för resurser.

Dekoratör Argument beskrivning
batchSize inget Konfigurera instanser för att distribuera sekventiellt.
beskrivning sträng Ange beskrivningar för resursen.

Dekoratörer finns i sys-namnområdet. Om du behöver skilja en dekoratör från ett annat objekt med samma namn, förorda dekoratören med sys. Om din Bicep-fil till exempel innehåller en parameter med namnet descriptionmåste du lägga till sys-namnområdet när du använder beskrivningsdekoratören.

BatchSize

Du kan bara använda @batchSize() en resurs- eller moduldefinition som använder ett for uttryck.

Som standard distribueras resurser parallellt. När du lägger till dekoratören batchSize(int) distribuerar du instanser seriellt.

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

Mer information finns i Distribuera i batchar.

beskrivning

Lägg till en förklaring genom att lägga till en beskrivning i resursdeklarationer. Till exempel:

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

Markdown-formaterad text kan användas för beskrivningstexten.

Resursnamn

Varje resurs har ett namn. När du anger resursnamnet bör du vara uppmärksam på reglerna och begränsningarna för resursnamn.

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

Vanligtvis anger du namnet till en parameter så att du kan skicka in olika värden under distributionen.

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

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

Resursplats

Många resurser kräver en plats. Du kan avgöra om resursen behöver en plats antingen via intellisense- eller mallreferensen. I följande exempel läggs en platsparameter som används för lagringskontot.

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

Vanligtvis anger du platsen till en parameter så att du kan distribuera till olika platser.

param location string = resourceGroup().location

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

Olika resurstyper stöds på olika platser. Information om hur du hämtar de platser som stöds för en Azure-tjänst finns i Produkter tillgängliga per region. Om du vill hämta de platser som stöds för en resurstyp använder du Azure PowerShell eller Azure CLI.

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

Resurstaggar

Du kan använda taggar för en resurs under distributionen. Taggar hjälper dig att logiskt organisera dina distribuerade resurser. Exempel på olika sätt att ange taggar finns i ARM-malltaggar.

Hanterade identiteter för resurser

Vissa resurser stöder hanterade identiteter för Azure-resurser. Dessa resurser har ett identitetsobjekt på rotnivån för resursdeklarationen.

Du kan använda antingen systemtilldelade eller användartilldelade identiteter.

I följande exempel visas hur du konfigurerar en systemtilldelad identitet för ett Azure Kubernetes Service-kluster.

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

I nästa exempel visas hur du konfigurerar en användartilldelad identitet för en virtuell dator.

param userAssignedIdentity string

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

Resursspecifika egenskaper

Ovanstående egenskaper är generiska för de flesta resurstyper. När du har angett dessa värden måste du ange de egenskaper som är specifika för den resurstyp som du distribuerar.

Använd resursreferensen intellisense eller Bicep för att avgöra vilka egenskaper som är tillgängliga och vilka som krävs. I följande exempel anges de återstående egenskaperna för ett lagringskonto.

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

Nästa steg