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.

Förklaring

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.

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@2021-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.

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 Bicep-utökningsproviderresurser. Mer information finns i Bicep-utökningsbarhet för Kubernetes-providern.

Använd syntaxen om if du vill distribuera en resurs villkorligt. Mer information finns i Villkorsstyrd distribution i Bicep.

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

Om du vill distribuera fler än en instans av en resurs använder du syntaxen for . Du kan använda dekoratören batchSize för att ange om instanserna 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>]
  }
}

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@2019-06-01' = {
  name: 'examplestorage'
  ...
}

Vanligtvis ställer du in namnet på 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@2019-06-01' = {
  name: storageAccountName
  ...
}

Location

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 till som används för lagringskontot.

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

Normalt skulle du ange plats till en parameter så att du kan distribuera till olika platser.

param location string = resourceGroup().location

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

Olika resurstyper stöds på olika platser. Information om vilka platser som stöds för en Azure-tjänst finns i Tillgängliga produkter 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

Taggar

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 Azure-resurser

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

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@2020-09-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@2020-06-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Resursspecifika egenskaper

Föregå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 intellisense- eller Bicep-resursreferens 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@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Nästa steg