Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano składnię używaną do dodawania zasobu do pliku Bicep. W pliku Bicep możesz użyć maksymalnie 800 zasobów. Aby uzyskać więcej informacji, zobacz Limity szablonów.
Definiowanie zasobów
Dodaj deklarację zasobu przy użyciu słowa kluczowego resource . Ustaw symboliczną nazwę zasobu. Nazwa symboliczna nie jest taka sama jak nazwa zasobu. Użyj nazwy symbolicznej, aby odwołać się do zasobu w innych częściach pliku Bicep.
@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Deklaracja konta magazynu może rozpoczynać się od:
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
...
}
W nazwach symbolicznych jest rozróżniana wielkość liter. Mogą zawierać litery, cyfry i podkreślenia (_). Nie mogą zaczynać się od liczby. Zasób nie może mieć takiej samej nazwy jak parametr, zmienna lub moduł.
Informacje o dostępnych typach zasobów i wersjach znajdują się w dokumentacji referencyjnej zasobów Bicep. Bicep nie obsługuje elementu apiProfile, który jest dostępny w szablonach Azure Resource Manager (szablonach ARM) w formacie JSON. Możesz także definiować zasoby dostawcy rozszerzeń dla języka Bicep. Aby uzyskać więcej informacji, zobacz Dostawca rozszerzenia kubernetes Bicep.
Aby warunkowo wdrożyć zasób, użyj if składni . Aby uzyskać więcej informacji, zobacz Wdrażanie warunkowe w aplikacji Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Aby wdrożyć więcej niż jedno wystąpienie zasobu, użyj for składni . Można użyć dekoratora batchSize, aby określić, czy instancje są wdrażane szeregowo, czy równolegle. Aby uzyskać więcej informacji, zobacz Pętle iteracyjne w języku Bicep.
@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
<properties-to-repeat>
}]
Możesz również użyć for składni właściwości zasobu, aby utworzyć tablicę.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
properties: {
<array-property>: [for <item> in <collection>: <value-to-repeat>]
}
}
Użyj dekoratorów
Zapisuj dekoratory w formacie @expression i umieszczaj je powyżej deklaracji zasobów. W poniższej tabeli przedstawiono dostępne dekoratory dla zasobów.
| Dekorator | Argumentacja | Opis |
|---|---|---|
| batchSize | Brak | Skonfiguruj instancje do sekwencyjnego wdrażania. |
| opis | ciąg | Podaj opisy zasobu. |
| nullIfNotFound | Brak | Jeśli zasób nie istnieje, symbol zasobu przyjmuje wartość null zamiast powodować niepowodzenie wdrożenia. |
| onlyIfNotExists | Brak | Wdróż zasób tylko wtedy, gdy jeszcze nie istnieje w zakresie docelowym. |
Dekoratory znajdują się w przestrzeni nazw systemu. Jeśli musisz odróżnić dekorator od innego elementu o tej samej nazwie, poprzedź go prefiksem sys. Jeśli na przykład plik Bicep zawiera parametr o nazwie description, należy dodać przestrzeń nazw sys podczas korzystania z dekoratora description.
BatchSize
Można stosować @batchSize() tylko do definicji zasobu lub modułu for , która używa wyrażenia.
Domyślnie zasoby są wdrażane równolegle. Po dodaniu dekoratora batchSize(int) wdrażasz instancje szeregowo.
@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Aby uzyskać więcej informacji, zobacz Wdrażanie w partiach.
Opis
Aby dodać wyjaśnienie, dodaj opis do deklaracji zasobów. Na przykład:
@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Tekst opisu można użyć w formacie Markdown.
nullIfNotFound
Zastosuj dekorator @nullIfNotFound() do istniejących deklaracji zasobów. Jeśli odwołujesz się do istniejącego zasobu w Bicep (przy użyciu istniejącego słowa kluczowego), wdrożenie usługi ARM kończy się niepowodzeniem, jeśli ten zasób nie zostanie znaleziony w czasie wdrażania. Stosując @nullIfNotFound(), jeśli zasób nie istnieje, symbol zasobu przyjmuje wartość null zamiast powodować błąd wdrożenia.
@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
tylko jeśli nie istnieje
Domyślnie, gdy uruchomione jest wdrożenie Bicep, usługa Azure Resource Manager (ARM) tworzy zasób, jeśli ten nie istnieje, lub go aktualizuje, jeśli istnieje. Jeśli istniejący zasób ma właściwości różniące się od szablonu, usługa ARM może próbować go zaktualizować — lub zakończyć się niepowodzeniem, jeśli aktualizacje nie są dozwolone.
Począwszy od wersji Bicep w wersji 0.38.3, dekorator nakazuje usłudze ARM utworzenie zasobu tylko wtedy, @onlyIfNotExists() gdy jeszcze nie istnieje. Jeśli usługa ARM znajdzie zasób o identyfikatorze zasobu, pomija tworzenie i pozostawia istniejący zasób bez zmian.
@onlyIfNotExists()
resource example 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'mystorageacct'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
Nazwa zasobu
Każdy zasób ma nazwę. Podczas ustawiania nazwy zasobu należy zwrócić uwagę na reguły i ograniczenia nazw zasobów.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
...
}
Zazwyczaj ustaw nazwę jako parametr, aby można było przekazywać różne wartości podczas wdrożenia.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
...
}
Lokalizacja zasobu
Wiele zasobów wymaga lokalizacji. Możesz określić, czy zasób wymaga określenia lokalizacji, na podstawie mechanizmu IntelliSense lub odwołania do szablonu. W poniższym przykładzie dodano parametr lokalizacji używany dla konta magazynu.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Zazwyczaj należy ustawić lokalizację na parametr , aby można je było wdrożyć w różnych lokalizacjach.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: location
...
}
Różne typy zasobów są obsługiwane w różnych lokalizacjach. Aby uzyskać obsługiwane lokalizacje dla usługi Azure, zobacz Dostępność produktów według regionów. Aby uzyskać obsługiwane lokalizacje dla typu zasobu, użyj programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Tagi zasobów
Tagi można stosować do zasobu podczas wdrażania. Tagi ułatwiają logiczne organizowanie wdrożonych zasobów. Przykłady różnych sposobów określania tagów można znaleźć w artykule Tagi szablonów ARM.
Tożsamości zarządzane dla zasobów
Niektóre zasoby obsługują tożsamości zarządzane dla zasobów platformy Azure. Te zasoby mają obiekt tożsamości na poziomie głównym deklaracji zasobu.
Można użyć tożsamości przypisanych przez system lub przypisanych przez użytkownika.
W poniższym przykładzie pokazano, jak skonfigurować tożsamość przypisaną przez system dla klastra usługi Azure Kubernetes Service.
resource aks 'Microsoft.ContainerService/managedClusters@2025-08-02-preview' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
W następnym przykładzie pokazano, jak skonfigurować tożsamość przypisaną przez użytkownika dla maszyny wirtualnej.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Właściwości specyficzne dla zasobu
Powyższe właściwości są ogólne dla większości typów zasobów. Po ustawieniu tych wartości ustaw właściwości właściwe dla typu wdrażanego zasobu.
Użyj funkcji IntelliSense lub Bicep odwołania do zasobów, aby określić, które właściwości są dostępne i które są wymagane. W poniższym przykładzie ustawiono pozostałe właściwości konta magazynowego.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Następne kroki
- Aby warunkowo wdrożyć zasób, zobacz Wdrażanie warunkowe w aplikacji Bicep.
- Aby odwołać się do istniejącego zasobu, zobacz Istniejące zasoby w aplikacji Bicep.
- Aby dowiedzieć się więcej o określaniu kolejności wdrażania, zobacz Zależności zasobów w aplikacji Bicep.