Udostępnij za pośrednictwem


Deklaracja zasobu w Bicep

W tym artykule opisano składnię używaną do dodawania zasobu do pliku Bicep. W pliku Bicep jest ograniczonych do 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 . Należy ustawić symboliczną nazwę zasobu. Nazwa symboliczna nie jest taka sama jak nazwa zasobu. Nazwa symboliczna służy do odwołowania się do zasobu w innych częściach pliku Bicep.

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

Dlatego deklaracja konta magazynu może zaczynać się od:

resource stg 'Microsoft.Storage/storageAccounts@2023-04-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ł.

Aby zapoznać się z dostępnymi typami zasobów i wersją, zobacz Bicep resource reference (Dokumentacja zasobów Bicep). Bicep nie obsługuje apiProfileformatu , który jest dostępny w formacie JSON szablonów usługi Azure Resource Manager (szablonów usługi ARM). Można również zdefiniować zasoby dostawcy rozszerzalności 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 wystąpienia są wdrażane szeregowo, czy równolegle. Aby uzyskać więcej informacji, zobacz Iteracyjne pętle w 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>]
  }
}

Korzystanie z dekoratorów

Dekoratory są zapisywane w formacie @expression i są umieszczane powyżej deklaracji zasobów. W poniższej tabeli przedstawiono dostępne dekoratory dla zasobów.

Dekorator Argument opis
batchSize Brak Konfigurowanie wystąpień w celu sekwencyjnego wdrażania.
opis string Podaj opisy zasobu.

Dekoratory znajdują się w przestrzeni nazw systemu. Jeśli musisz odróżnić dekorator od innego elementu o tej samej nazwie, należy poprzeć dekorator za pomocą polecenia sys. Jeśli na przykład plik Bicep zawiera parametr o nazwie description, należy dodać przestrzeń nazw systemu podczas korzystania z dekoratora opisu .

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) wystąpienia są wdrażane szeregowo.

@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-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@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Tekst w formacie markdown może służyć do tekstu opisu.

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

Zazwyczaj należy ustawić nazwę na parametr, aby można było przekazać różne wartości podczas wdrażania.

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

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

Lokalizacja zasobu

Wiele zasobów wymaga lokalizacji. Możesz określić, czy zasób potrzebuje lokalizacji za pomocą funkcji IntelliSense lub odwołania do szablonu. W poniższym przykładzie dodano parametr lokalizacji używany dla konta magazynu.

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

Zazwyczaj należy ustawić lokalizację na parametr, aby można było wdrożyć je w różnych lokalizacjach.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2023-04-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 platformy 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 temacie Tagi szablonów usługi 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@2024-02-01' = {
  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@2024-03-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 należy ustawić właściwości specyficzne dla wdrażanych typów zasobów.

Użyj odwołania do zasobów intellisense lub Bicep, 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 dla konta magazynu.

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

Następne kroki