Dichiarazione di risorsa in Bicep
Questo articolo descrive la sintassi usata per aggiungere una risorsa al file Bicep. Sono limitate a 800 risorse in un file Bicep. Per altre informazioni, vedere Limiti dei modelli.
Definizione delle risorse
Aggiungere una dichiarazione di risorsa usando la parola chiave resource
. Impostare un nome simbolico per la risorsa. Il nome simbolico non corrisponde al nome della risorsa. Si usa questo nome simbolico per fare riferimento alla risorsa in altre parti del file Bicep.
@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Pertanto, una dichiarazione per un account di archiviazione può iniziare con:
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
I nomi simbolici distinguono tra maiuscole e minuscole. Possono contenere solo lettere, numeri e caratteri di sottolineatura (_
). Non possono iniziare con un numero. Una risorsa non può avere lo stesso nome di un parametro, una risorsa o un modulo.
Per i tipi di risorse e la versione disponibili, vedere Informazioni di riferimento sulle risorse Bicep. Bicep non supporta apiProfile
, disponibile in JSON dei modelli di Azure Resource Manager (modelli ARM). È anche possibile definire le risorse del provider di estendibilità Bicep. Per altre informazioni, vedere Provider Kubernetes di estendibilità Bicep.
Per distribuire una risorsa in modo condizionale, usare la sintassi if
. Per altre informazioni, vedere Distribuzione condizionale in Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Per distribuire più istanze di una risorsa, usare la sintassi for
. È possibile usare batchSize
decorator per specificare se le istanze vengono distribuite in modo seriale o in parallelo. Per altre informazioni, vedere Cicli iterativi in Bicep.
@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
<properties-to-repeat>
}]
È anche possibile usare la sintassi for
nelle proprietà delle risorse per creare un array.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
properties: {
<array-property>: [for <item> in <collection>: <value-to-repeat>]
}
}
Usare elementi Decorator
Gli elementi Decorator vengono scritti nel formato @expression
e vengono posizionati sopra le dichiarazioni di risorse. Nella tabella seguente vengono illustrati gli elementi Decorator disponibili per le risorse.
Decorator | Argomento | Descrizione |
---|---|---|
batchSize | Nessuno | Consente di configurare le istanze da distribuire in sequenza. |
description | stringa | Fornire descrizioni per la risorsa. |
I decorator si trovano nello spazio dei nomi sys. Se è necessario distinguere un decorator da un altro elemento con lo stesso nome, anteporre al decorator con sys
. Ad esempio, se il file Bicep include un parametro denominato description
, è necessario aggiungere lo spazio dei nomi sys quando si usa il decorator descrizione.
BatchSize
È possibile applicare @batchSize()
solo a una definizione di risorsa o modulo che usa un'espressionefor
.
Per impostazione predefinita, le risorse vengono distribuite in parallelo. Quando si aggiunge l'elemento Decorator batchSize(int)
, si distribuiscono le istanze in modo seriale.
@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
...
}]
Per altre informazioni, vedere Distribuire in batch.
Descrizione
Per aggiungere una spiegazione, aggiungere una descrizione alle dichiarazioni di risorse. Ad esempio:
@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
...
}]
Il testo in formato Markdown può essere usato come testo dell'elemento description.
Nome risorsa
Ogni risorsa ha un nome. Quando si imposta il nome della risorsa, prestare attenzione alle regole e alle restrizioni per i nomi delle risorse.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
...
}
In genere, è necessario impostare il nome su un parametro in modo da poter passare valori diversi durante la distribuzione.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
...
}
Posizione della risorsa
Molte risorse richiedono una posizione. È possibile determinare se la risorsa necessita di una posizione tramite intellisense o informazioni di riferimento sul modello. Nell'esempio seguente viene aggiunto un parametro posizione che è usato per l'account di archiviazione.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
In genere, si imposta la posizione su un parametro in modo che sia possibile eseguire la distribuzione in posizioni diverse.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: location
...
}
Diversi tipi di risorse sono supportati in posizioni diverse. Per ottenere le posizioni supportate per un servizio di Azure, vedere Prodotti disponibili in base all'area. Per ottenere i percorsi supportati per un tipo di risorsa, usare Azure PowerShell o l'interfaccia della riga di comando di Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Tag delle risorse
È possibile applicare tag a una risorsa durante la distribuzione. I tag consentono di organizzare in modo logico le risorse distribuite. Per esempi dei diversi modi in cui è possibile specificare i tag, vedere Tag dei modelli di ARM.
Identità gestite per le risorse
Alcune risorse supportano le identità gestite per le risorse di Azure. Tali risorse hanno un oggetto identità a livello radice della dichiarazione di risorsa.
È possibile usare identità assegnate dal sistema o assegnate dall'utente.
L'esempio seguente illustra come configurare un'identità assegnata dal sistema per un cluster del servizio Azure Kubernetes.
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
L'esempio seguente illustra come configurare un'identità assegnata dall'utente per una macchina virtuale.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Proprietà specifiche della risorsa
Le proprietà precedenti sono generiche per la maggior parte dei tipi di risorse. Dopo aver impostato questi valori, è necessario impostare le proprietà specifiche del tipo di risorsa che si sta distribuendo.
Usare intellisense o informazioni di riferimento su Bicep per determinare quali proprietà sono disponibili e quali sono necessarie. Nell'esempio seguente vengono impostate le proprietà rimanenti per un account di archiviazione.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Passaggi successivi
- Per distribuire una risorsa in modo condizionale, vedere Distribuzione condizionale nei modelli di Bicep.
- Per fare riferimento a una risorsa esistente, vedere Risorse esistenti in Bicep.
- Per informazioni su come viene determinato l'ordine di distribuzione, vedere Dipendenze delle risorse in Bicep.